24

I'm very new to android and I'm following this example.

The code says we need to do these steps to get an dialog box:

AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());

// 2. Chain together various setter methods to set the dialog characteristics
builder.setMessage(R.string.dialog_message)
       .setTitle(R.string.dialog_title);

// 3. Get the AlertDialog from create()
AlertDialog dialog = builder.create();

But where does the getActivity() method is defined?

I can't find that method.

gotqn
  • 42,737
  • 46
  • 157
  • 243
sriram
  • 8,562
  • 19
  • 63
  • 82

11 Answers11

60

The getActivity() method gives the context of the Activity. You can use YourActivityName.this instead of it.

The method getActivity() is normally used in fragments to get the context of the activity in which they are inserted or inflated.

eg

AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this);

or if you are writing the code in your activity itself even

AlertDialog.Builder builder = new AlertDialog.Builder(this);

will workout. Please feel free to ask any doubts

Felix D.
  • 786
  • 1
  • 11
  • 17
pvn
  • 2,016
  • 19
  • 33
  • I'm not getting any exception. Are there any method needed to be called to make the alertbox to be displayed? – sriram Jan 23 '13 at 13:04
  • 2
    What? I thought `getActivity()` returned the Activity, not the context. See [here](http://stackoverflow.com/questions/32527199/cannot-resolve-method-getactivity) – the_prole Nov 29 '15 at 04:54
2

new AlertDialog.Builder() needs Context as input parameter. So try like

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
Raj
  • 1,843
  • 2
  • 21
  • 47
1

getActivity() is implemented in the Fragment class.

See http://developer.android.com/reference/android/app/Fragment.html

userM1433372
  • 5,345
  • 35
  • 38
1

The constructor AlertDialog.Builder expects a Context parameter. Context is accessible from Activity, Service etc, since they all extend Context, and can be passed as this.

The method getActivity() is declared as others have mentiond in the Fragment class.

Ovidiu Latcu
  • 71,607
  • 15
  • 76
  • 84
  • hmmm I tried my `MyActivity.this` but it doesn't work. Note that I'm inside a `setOnClickListener` on a `button`. – sriram Jan 23 '13 at 12:57
0

This article describes how to create an AlertDialog in a Fragment. in Fragments, you can get the corresponding Activity by calling getActivity() method. but in your case i assume you are doing this in an Activity. so you don't have to call getActivity(). just use this

AlertDialog.Builder builder = new AlertDialog.Builder(this);
Asanka Senavirathna
  • 4,570
  • 4
  • 18
  • 20
0

getActivity(); is a method of android Fragment, if you want to show dialog in your activity, just pass this of your activity instead of getActivity().

Aram
  • 695
  • 1
  • 5
  • 20
0

getActivity() is the member method of the super class Activity that you extend from . It is defined in the Activity class itself. infact onCreate(), onPause() and all other functions are themselves also defined in the parent Activity Class.

Sahil Mahajan Mj
  • 11,033
  • 8
  • 53
  • 100
Rahul Verma
  • 2,140
  • 3
  • 21
  • 31
0

I had exactly the same problem and finally I found what I actually suspected... Simply add:

dialog.show();

...and voila. There it is. Wonder why this isn't stated in the original example!?

p s
  • 11
  • 1
0

Update android API level 23.

Use getContext() instead of getActivity().

spenibus
  • 4,339
  • 11
  • 26
  • 35
Aks4125
  • 4,522
  • 4
  • 32
  • 48
0

// 1. Instantiate an AlertDialog.Builder with its constructor

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);

// 2. Chain together various setter methods to set the dialog characteristics

builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title);

// 3. Get the AlertDialog from create()

AlertDialog dialog = builder.create();

// 4. Show the AlertDialog

dialog.show();
0

getActivity when you use then no need to put new... such as

PendingIntent pi=new PendingIntent.getActivity(this,0,intent,0); //is wrong

user it as :

PendingIntent pi=PendingIntent.getActivity(this,0,intent,0); //is Right code

here we remove new that provide new allocation but here it provide its allocation via getActivity in with in Activity(this).

Pradeep Sheoran
  • 493
  • 6
  • 15