[英]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
内访问Activity
( Search
实例),以便可以访问它的方法和变量。
谢谢。
使用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.