我有一个带有 gridview 的自定义对话框。 当我单击 TextView (运行)时会弹出该对话框。对话框中有一个 GridView 。 我的目标是在从 gridview 中选择值时更改运行 textview 的值并关闭对话框
protected Dialog onCreateDialog(int id) {
Dialog dialog = null;
switch (id) {
case CATEGORY_ID:
AlertDialog.Builder builder;
AlertDialog alertDialog;
// Context mContext = this;
LayoutInflater inflater = (LayoutInflater) context
.getSystemService(LAYOUT_INFLATER_SERVICE);
View layout = inflater.inflate(R.layout.gridview_cell,
(ViewGroup) findViewById(R.id.layout_root));
GridView gridview = (GridView) layout.findViewById(R.id.gridView1);
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
R.layout.text_gridview, R.id.run_cell, numbers);
gridview.setAdapter(adapter);
builder = new AlertDialog.Builder(context);
builder.setView(layout);
dialog = builder.create();
gridview.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View v,
int position, long id) {
runs.setText(String.valueOf(position));
**dialog.cancel() or dialog.dismiss are giving me this error: 'Cannot refer to a non-final variable result inside an inner class defined in a different method'**
}
});
break;
}
return dialog;
}
最佳答案
而不是
Dialog dialog = null;
做
final Dialog dialog;
有关此问题的更好解释,请查看 this previously asked question .
编辑
我没有看到剩下的问题。由于您有一个 switch
语句,因此您可以使用 default
设置值,如下所示:
protected Dialog onCreateDialog(int id) { final Dialog dialog; switch (id) { case CATEGORY_ID: //your code break; default: dialog = null; break; } return dialog; }
关于Android:无法关闭自定义对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20131038/