getActivity() where it is defined?

一笑奈何 提交于 2019-12-17 22:23:22

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!