繁体   English   中英

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

[英]How can I access my Activity's instance variables from within an AlertDialog's onClickListener?

这是我的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活动中定义的objAdapater变量。 我无权访问onClickListener的搜索实例,因此无法访问它。 在随处都传递Activity实例的情况下,我的代码有些麻烦。 也许我做错了。

我如何从onClickListener内访问ActivitySearch实例),以便可以访问它的方法和变量。

谢谢。

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

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

使您的活动实现OnClickListener:

public class Search  extends Activity implements DialogInterface.OnClickListener { ...

将onclick方法添加到您的活动中:

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

然后将您的活动作为侦听器传递:

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

builder.setSingleChoiceItems(lstChoices),0, this);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM