以下是我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
个实例。也许我做错了什么。
如何从Activity
中访问Search
(onClickListener
实例),以便我可以访问它的方法和变量。
谢谢。
答案 0 :(得分:4)
使用Search.this.objAdapter
从侦听器访问objAdapter
应该有效。
Search.this
引用Search
的当前实例,并允许您访问其字段和方法。
答案 1 :(得分:1)
让您的活动实现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);