1

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

    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

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

在调试模式下,第二个构建器代码被读取,就好像它要显示但随后都关闭一样。

也许你不能这样做?

有任何想法吗?

4

1 回答 1

1

你放错地方了

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

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

于 2013-01-23T13:33:58.920 回答