getActivity()在哪里定义?

24

我对安卓非常陌生,正在按照这个示例进行学习。

代码中提到我们需要按照以下步骤获取对话框:

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'对象需要有该方法可用。 - JDx
在这种情况下,它是一个片段。 - njzk2
11个回答

60

getActivity()方法提供了Activity的上下文。您可以使用YourActivityName.this代替它。

getActivity()方法通常在片段中使用,以获取它们插入或扩充的活动的上下文。

例如:

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

或者,如果您正在您的活动中编写代码

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

会锻炼身体。如有任何疑问,请随时询问。


我没有收到任何异常。是否需要调用任何方法来显示警告框? - sriram
2
什么?我以为 getActivity() 返回的是 Activity,而不是上下文。请参见这里 - the_prole

2

创建AlertDialog.Builder()时需要传入Context作为输入参数。因此,可以尝试以下方式:

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

1

1
构造函数AlertDialog.Builder需要一个Context参数。由于它们都extendContext,因此可以从ActivityService等访问Context,并可以将其作为this传递。
方法getActivity()Fragment类中被声明,正如其他人所提到的。

嗯,我尝试了MyActivity.this但是不起作用。请注意,我在一个buttonsetOnClickListener中。 - sriram

0

// 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. 显示AlertDialog

dialog.show();

0

我曾经遇到过完全相同的问题,最终我找到了我实际怀疑的东西... 只需添加:

dialog.show();

...然后就完成了。不知道为什么原始示例中没有说明这一点!?


0
本文介绍如何在 Fragment 中创建 AlertDialog。在 Fragment 中,您可以通过调用 getActivity() 方法获取相应的 Activity。但在您的情况下,我假设您是在 Activity 中执行此操作。因此,您不必调用 getActivity()。只需使用 this 即可。
AlertDialog.Builder builder = new AlertDialog.Builder(this);

0

更新 Android API 等级至 23。

使用 getContext() 替代 getActivity()


0

getActivity();是Android Fragment的一个方法,如果你想在你的活动中显示对话框,只需传递你的活动的this而不是getActivity()


0

getActivity() 是你所继承的 Activity 超类的成员方法。它在 Activity 类中自身被定义。实际上,onCreate()onPause() 和所有其他函数也都是在父类的 Activity 类中被定义的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接