【问题标题】:getActivity() where it is defined?getActivity() 它是在哪里定义的?
【发布时间】: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' 对象需要有该方法可用。
  • 在这种情况下,它在一个片段中

标签: android methods android-alertdialog


【解决方案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) 提供其分配。

                  【讨论】:

                    猜你喜欢
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2018-09-15
                    • 1970-01-01
                    • 2022-01-26
                    • 1970-01-01
                    • 2016-07-09
                    • 1970-01-01
                    相关资源
                    最近更新 更多