问题
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.
回答1:
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
回答2:
new AlertDialog.Builder() needs Context as input parameter. So try like
AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
回答3:
getActivity() is implemented in the Fragment class.
See http://developer.android.com/reference/android/app/Fragment.html
回答4:
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.
回答5:
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);
回答6:
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()
.
回答7:
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.
回答8:
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!?
回答9:
Update android API level 23.
Use getContext()
instead of getActivity()
.
回答10:
// 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();
回答11:
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).
来源:https://stackoverflow.com/questions/14480129/getactivity-where-it-is-defined