getActivity() 它是在哪里定义的?
Posted
技术标签:
【中文标题】getActivity() 它是在哪里定义的?【英文标题】:getActivity() where it is defined? 【发布时间】:2013-01-06 22:57:46 【问题描述】:我对 android 很陌生,我正在关注这个example。
代码说我们需要做这些步骤来得到一个对话框:
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();
但是getActivity()
方法是在哪里定义的呢?
我找不到那个方法。
【问题讨论】:
调用这样的方法与调用 'this.getActivity()' 相同,因此 'this' 对象需要有该方法可用。 在这种情况下,它在一个片段中 【参考方案1】:getActivity()
方法给出了 Activity 的上下文。您可以使用YourActivityName.this
代替它。
getActivity()
方法通常用于片段中,以获取插入或膨胀它们的 Activity 的上下文。
例如
AlertDialog.Builder builder = new AlertDialog.Builder(YourActivityName.this);
或者如果你在自己的活动中编写代码,甚至
AlertDialog.Builder builder = new AlertDialog.Builder(this);
会锻炼。有任何疑问请随时提出
【讨论】:
我没有遇到任何异常。是否需要调用任何方法来显示警报框? 什么?我以为getActivity()
返回的是活动,而不是上下文。见here【参考方案2】:
new AlertDialog.Builder() 需要 Context 作为输入参数。所以试试吧
AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
【讨论】:
【参考方案3】:getActivity() 在 Fragment 类中实现。
见http://developer.android.com/reference/android/app/Fragment.html
【讨论】:
【参考方案4】:构造函数AlertDialog.Builder
需要一个Context
参数。 Context
可以从Activity
、Service
等访问,因为它们都是extend
Context
,并且可以作为this
传递。
getActivity()
方法的声明与其他人在 Fragment
类中提到的一样。
【讨论】:
嗯我试过我的MyActivity.this
,但它不起作用。请注意,我在 setOnClickListener
上的 button
内。【参考方案5】:
本文介绍如何在Fragment
中创建AlertDialog
。在 Fragments 中,可以通过调用getActivity()
方法得到对应的Activity
。但在您的情况下,我假设您在Activity
中执行此操作。所以你不必打电话给getActivity()
。只需使用this
AlertDialog.Builder builder = new AlertDialog.Builder(this);
【讨论】:
【参考方案6】:getActivity();是android Fragment的一种方法,如果你想在你的activity中显示对话框,只需传递你的activity的this
而不是getActivity()
。
【讨论】:
【参考方案7】:getActivity()
是您从中扩展的超类 Activity 的成员方法。它在 Activity 类本身中定义。事实上onCreate()
、onPause()
和所有其他函数本身也在父 Activity 类中定义。
【讨论】:
【参考方案8】:我遇到了完全相同的问题,最后我发现了我真正怀疑的问题...... 只需添加:
dialog.show();
...瞧。它在那里。 想知道为什么原始示例中没有说明这一点!?
【讨论】:
【参考方案9】:更新 android API 级别 23。
使用getContext()
代替getActivity()
。
【讨论】:
【参考方案10】:// 1. 用它的构造函数实例化一个AlertDialog.Builder
AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
// 2. 将各种setter方法链接在一起来设置对话框特性
builder.setMessage(R.string.dialog_message).setTitle(R.string.dialog_title);
// 3. 从create()中获取AlertDialog
AlertDialog dialog = builder.create();
// 4. 显示警报对话框
dialog.show();
【讨论】:
【参考方案11】:getActivity 用的时候就不用再放新的了... 比如
PendingIntent pi=new PendingIntent.getActivity(this,0,intent,0); //is wrong
使用它:
PendingIntent pi=PendingIntent.getActivity(this,0,intent,0); //is Right code
这里我们删除提供新分配的 new,但这里它通过 getActivity in with in Activity(this) 提供其分配。
【讨论】:
以上是关于getActivity() 它是在哪里定义的?的主要内容,如果未能解决你的问题,请参考以下文章
如何在自定义对话框类中使用 getActivity.getLayoutInflater()