如何访问从AlertDialog的onClickListener内我的活动的实例变量?(How ca

2019-10-17 04:29发布

这是我的一个非常简化的版本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被附接到每个对话框中的项目。 我需要访问objAdapater是我定义的变量Search活动。 我没有我的内访问搜索实例onClickListener所以我不能访问它。 我有一个汤一点点在我与的传球码Activity的实例比比皆是。 也许我做错了什么。

我将如何获得访问ActivitySearch ,从我内实例) onClickListener这样我就可以访问它的方法和变量。

谢谢。

Answer 1:

使用Search.this.objAdapter访问objAdapter从听众应该工作。

Search.this指当前实例Search ,并允许您访问其属性和方法。



Answer 2:

让你的活动实现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);


文章来源: How can I access my Activity's instance variables from within an AlertDialog's onClickListener?