24

我对 android 很陌生,我正在关注这个例子

代码说我们需要执行这些步骤来获得一个对话框:

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()方法是在哪里定义的呢?

我找不到那个方法。

4

11 回答 11

59

getActivity()方法给出了 Activity 的上下文。你可以用YourActivityName.this它来代替它。

该方法getActivity()通常用于片段中,以获取插入或膨胀它们的活动的上下文。

例如

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

或者如果您甚至在活动本身中编写代码

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

会锻炼。请随时提出任何疑问

于 2013-01-23T12:50:55.223 回答
2

new AlertDialog.Builder() 需要 Context 作为输入参数。所以尝试喜欢

AlertDialog.Builder builder = new AlertDialog.Builder(yourActivityName.this);
于 2013-01-23T13:10:41.530 回答
1

getActivity() 在 Fragment 类中实现。

http://developer.android.com/reference/android/app/Fragment.html

于 2013-01-23T12:50:31.407 回答
1

构造函数AlertDialog.Builder需要一个Context参数。Context可以从Activity等访问Service,因为它们都是extend Context, 并且可以作为 . 传递this

该方法getActivity()被声明为其他人在Fragment类中提到的。

于 2013-01-23T12:53:40.937 回答
0

本文介绍如何AlertDialogFragment. 在 Fragments 中,可以Activity通过调用getActivity()方法得到对应的。但在你的情况下,我假设你是在Activity. 所以你不必打电话getActivity()。只需使用this

AlertDialog.Builder builder = new AlertDialog.Builder(this);
于 2013-01-23T12:50:41.060 回答
0

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

于 2013-01-23T12:50:42.907 回答
0

getActivity()是您从中扩展的超类 Activity 的成员方法。它是在Activity类本身中定义的。事实上onCreate()onPause()所有其他函数本身也在父Activity类中定义。

于 2013-01-23T12:51:17.587 回答
0

我遇到了完全相同的问题,最后我发现了我真正怀疑的问题......只需添加:

dialog.show();

……瞧。它在那里。想知道为什么原始示例中没有说明这一点!?

于 2015-04-28T19:12:46.687 回答
0

更新 android API 级别 23。

使用getContext()而不是getActivity().

于 2015-10-16T13:09:24.780 回答
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. 显示警报对话框

dialog.show();
于 2018-01-25T13:58:20.773 回答
0

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) 提供其分配。

于 2018-05-26T13:48:15.557 回答