Android:无法关闭自定义对话框

标签 android android-alertdialog android-gridview

我有一个带有 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/

相关文章:

android - 带有广告横幅的相对布局

java - 如何在Android应用中解决有关YouTube API的问题

android - 如何访问每个 GridView 项的特定元素

Android使用 Intent 从 Activity 中打开 fragment

android - 使用 GridView 的自定义适配器

android - 如何在 ViewPager 中访问 ListFragment Adapter

android - 代号App上的一款深色风格状态栏

android - 在 Activity 启动时显示 AlertDialog,但不在屏幕方向更改时显示?

java - 如何获取 Activity 的 View ?

android - 使用 ImageView 显示 AlertDialog 而无需任何填充