java - 如何从 AlertDialog onClickListener 中访问我的 Activity 实例变量?

标签 java android scope instances

这是我的Activity的非常简化的版本:

public class Search extends Activity {

    //I need to access this.
    public SearchResultsAdapter objAdapter;

    public boolean onOptionsItemSelected(MenuItem itmMenuitem) {


      if (itmMenuitem.getItemId() == R.id.group) {

          final CharSequence[] items = {"Red", "Green", "Blue"};

          AlertDialog.Builder builder = new AlertDialog.Builder(this);
          builder.setTitle(itmMenuitem.getTitle());

          builder.setSingleChoiceItems(lstChoices),
              0, new DialogInterface.OnClickListener() {

                public void onClick(DialogInterface dialog, int item) {
                  //I need to access it from here.
                }

              });

          AlertDialog alert = builder.create();
          alert.show();

          return true;

        } 

    }

}

按下菜单按钮时,我的应用程序会弹出一个AlertDialog。创建 AlertDialog 时,内联 onClickListener 会附加到对话框中的每个项目。我需要访问在我的 Search Activity 中定义的 objAdapater 变量。我无权访问 onClickListener 中的搜索实例,因此无法访问它。我的代码中有一点麻烦,到处都传递 Activity 实例。也许我做错了什么。

如何从我的 onClickListener 中访问 Activity(Search 实例),以便我可以访问它的方法和变量。

谢谢。

最佳答案

使用 Search.this.objAdapter 从监听器访问 objAdapter 应该可以。

Search.this 引用 Search 的当前实例,并允许您访问其字段和方法。

关于java - 如何从 AlertDialog onClickListener 中访问我的 Activity 实例变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12157561/

相关文章:

unit-testing - Scala - 单元测试设置(使用访问修饰符限定符?)

java - 用Eclipse在java文件中找到刚刚编写的代码(即突出显示代码的新部分)

android - 在实现Firebase Phone Auth时,我从顶部得到一个奇怪的黑条动画

java - 是否有任何 API 允许您在 c/c++ 中调用部分 Android SDK?

android - 在 Android 上绘制内存高效的谷歌地图

java - 如何在android中首次运行时为变量设置值

javascript - 如果没有选择任何选项,则禁用按钮angularJS

java - 当 exec (i/j) 和 (i % j) 时,jvm 会执行一还是两次计算?

java - 包含对实现代码的引用的 OSGi 导出 API 安全吗?

java - NoClassDefFoundError: org/apache/hadoop/conf/配置