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 可以从ActivityService 等访问,因为它们都是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()

如何知道 Laravel 版本以及它在哪里定义?

php fsockopen 函数在哪里定义?

在Fragment里面调用getActivity()报null

在片段中,如何查找活动布局中定义的视图?

将零参数作为参数传递——行为是在哪里定义的?