AlertDialog.Builder setItems list with another



我正在尝试有一个项目列表,当触摸时会打开另一个项目列表。更像是项目的子菜单。这是因为我的第一个列表越来越长,我想将一些组合成一个子菜单。

    gridView.setOnItemClickListener(new OnItemClickListener() {
        public void onItemClick(AdapterView<?> parent, View v, final int position, long id) {
           final CharSequence[] items = {"Gallery Image Menu", "View pattern", "Delete pattern", "Locate pattern in list view", "Row Counter (with pattern)", "Share Pattern", "Share Image", "Cancel"};
            AlertDialog.Builder builder = new AlertDialog.Builder(grid.this);
            builder.setTitle(selectedimage);
            builder.setItems(items, new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int item) {

                    if (item == 0){
                        //first menu 1st item
                        dialog.dismiss();
                        final CharSequence[] items2 = {"Rotate image 180"+"u00B0", "Rotate image 90"+"u00B0", "Add image from pattern",  "Add image from file", "Add image from camera", "Remove image", "Cancel"};
                        final AlertDialog.Builder builder2 = new AlertDialog.Builder(grid.this);
                        builder2.setTitle(selectedimage);
                        builder2.setItems(items2, new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog2, int item) {

                                if(item == 0){
                                    //2nd menu, 1st item
                                    dialog2.dismiss();
                                    //do something
                                    return;
                                }
                                if(item == 1){
                                    dialog2.dismiss();
                                    //2nd menu, 2nd item
                                    //do something else
                                    return;
                                }

                            AlertDialog alert2 = builder2.create();
                            alert2.show();
                            }
                        });
                    }

                    if (item == 1){
                        //first menu 2nd item
                    }

                    if(item == 2){
                        //1st menu, 3rd item
                    }

                    if(item == 3){
                    }
                    //..... etc

                }
            });
            AlertDialog alert = builder.create();
            alert.show();

        }
    });//gridView.setOnItemClickListener
第一个构建器

按预期显示,但是当我选择要打开第二个构建器的第一个选项时,第一个构建器关闭并返回活动。

在调试模式下,读取第二个生成器代码,就好像它要显示一样,但随后两者都关闭了。

也许你不能这样做?

有什么想法吗?

你放错了地方

AlertDialog alert2 = builder2.create();
alert2.show();

部分。在});后将其向下移动 3 行

相关内容

最新更新