Android AlertDialog.Builder设置项列表与另一个

Android AlertDialog.Builder设置项列表与另一个,android,dialog,alert,builder,Android,Dialog,Alert,Builder,我正在尝试创建一个项目列表,当触摸该列表时,将打开另一个项目列表。更像是项目的子菜单。这是因为我的第一个列表越来越长,我想把一些组合成一个子菜单 gridView.setOnItemClickListener(new OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, final int position, long id) { f

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

    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
gridView.setOnItemClickListener(新的OnItemClickListener(){
public void onItemClick(AdapterView父视图、视图v、最终整型位置、长id){
final CharSequence[]项={“图库图像菜单”、“查看模式”、“删除模式”、“在列表视图中定位模式”、“行计数器(带模式)”、“共享模式”、“共享图像”、“取消”};
AlertDialog.Builder=新建AlertDialog.Builder(grid.this);
builder.setTitle(选择图像);
setItems(items,新的DialogInterface.OnClickListener()对话框){
公共void onClick(对话框接口对话框,int项){
如果(项==0){
//第一菜单第一项
dialog.dismise();
最终字符序列[]项2={“旋转图像180”+“\u00B0”,“旋转图像90”+“\u00B0”,“从图案添加图像”,“从文件添加图像”,“从相机添加图像”,“删除图像”,“取消”};
final AlertDialog.Builder builder2=新建AlertDialog.Builder(grid.this);
builder2.setTitle(选择图像);
builder2.setItems(items2,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface dialog2,int项){
如果(项==0){
//第二菜单,第一项
对话2.解散();
//做点什么
返回;
}
如果(项目==1){
对话2.解散();
//第二菜单,第二项
//做点别的
返回;
}
AlertDialog alert2=builder2.create();
alert2.show();
}
});
}
如果(项目==1){
//第一菜单第二项
}
如果(项目==2){
//第一菜单,第三项
}
如果(项目==3){
}
//……等等
}
});
AlertDialog alert=builder.create();
alert.show();
}
});//gridView.setOnItemClickListener
第一个构建器按预期显示,但当我选择要打开第二个构建器的第一个选项时,第一个构建器关闭并返回活动

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

也许你不能这样做

有什么好主意吗?

你把钥匙放错地方了

AlertDialog alert2 = builder2.create();
alert2.show();
部分。将其向下移动3行,在
}之后

您将

AlertDialog alert2 = builder2.create();
alert2.show();
部分。将其向下移动3行,在
}之后