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

最初のビルダーは期待どおりに表示されますが、2 番目のビルダーを開く最初のオプションを選択すると、最初のビルダーが閉じてアクティビティに戻ります。

デバッグ モードでは、2 番目のビルダー コードが表示されるかのように読み取られますが、両方とも閉じます。

おそらくあなたはこれを行うことができませんか?

何か案は?

4

1 に答える 1

1

あなたは置き忘れた

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

部。3行下に移動してから});

于 2013-01-23T13:33:58.920 に答える