代码之家  ›  专栏  ›  技术社区  ›  stuck

如何将上次单击嵌套的AlertDialog作为主按钮。setOnClickListener

  •  0
  • stuck  · 技术社区  · 8 年前

    编辑 :我有一个这样的情况嵌套警报对话框:

    public void showMsgDialog(){
            AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
            builder.setMessage(MapsActivity.this.getString(R.string.petunjuk_1))
            .setPositiveButton("Lanjut1", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    showMsgDialog1();
                    SharedPreferences preferences = getSharedPreferences("MYPREFS", MODE_PRIVATE);
                    SharedPreferences.Editor editor = preferences.edit();
                    editor.putString("key1", key1);
                    editor.apply();
                }
            })
            .setNegativeButton("Tutup", null)
            .create()
            .show();
        }
    
        public void showMsgDialog1(){
            AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
            builder.setMessage(MapsActivity.this.getString(R.string.petunjuk_2))
            .setPositiveButton("Lanjut2", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    showMsgDialog2();
                }
            })
            .setNegativeButton("Tutup", null)
            .create()
            .show();
        }
        public void showMsgDialog2(){
            AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
            builder.setMessage(MapsActivity.this.getString(R.string.petunjuk_3))
                    .setPositiveButton("Lanjut3", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            showMsgDialog3();
                        }
                    })
                    .setNegativeButton("Tutup", null)
                    .create()
                    .show();
        }
        public void showMsgDialog3(){
            AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
            builder.setMessage(MapsActivity.this.getString(R.string.petunjuk_4))
                    .setPositiveButton("Lanjut4", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            showMsgDialog4();
                        }
                    })
                    .setNegativeButton("Tutup", null)
                    .create()
                    .show();
        }
        public void showMsgDialog4(){
            AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
            builder.setMessage(MapsActivity.this.getString(R.string.petunjuk_5))
                    .setPositiveButton("Lanjut5", new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            showMsgDialog5();
                        }
                    })
                    .setNegativeButton("Tutup", null)
                    .create()
                    .show();
        }
        public void showMsgDialog5(){
            AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
            builder.setMessage(MapsActivity.this.getString(R.string.petunjuk_5))
                    .setPositiveButton("Selesai",null)
                    .create()
                    .show();
        }
    

    编辑 ,然后创建方法:

    public void choose(){
            if(key1 == true){
             // go to ShowMsgDialog number you want
            }elseif(key2 == true){
            // go to ShowMsgDialog number you want
            }
        } and so on..
    

    这很好,现在的情况是,如果用户转到另一个活动,并返回到对话框活动,它将再次转到第一个AlertDialog。 如何设置上一个AlertDialog setPositiveButton 在最后一次单击每个嵌套的AlertDialog时单击,如果 petunjuk 按钮被单击,它将转到嵌套AlertDialog的最后一次单击,否则它将再次转到第一次AlertDialog。直到最后一个按钮 Selesai 单击按钮。它将永远停留在最后一次单击时。任何人都很感激。谢谢

    1 回复  |  直到 8 年前
        1
  •  0
  •   Md Sufi Khan    8 年前

    我们可以用这种格式制作show对话框吗?

    int messageIds[] = {R.string.petunjuk_1, R.string.petunjuk_2, ....};
    String buttonTexts[] = {"Lanjut1", "Lanjut2", .....};
    
    public void showMsgDialog(final int id){
        AlertDialog.Builder builder = new AlertDialog.Builder(MapsActivity.this);
        builder.setMessage(MapsActivity.this.getString(messageIds[id]))
        .setPositiveButton(buttonTexts[id], new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
    
                SharedPreferences preferences = getSharedPreferences("MYPREFS", MODE_PRIVATE);
                SharedPreferences.Editor editor = preferences.edit();
                editor.putString("key", buttonTexts[id]);
                editor.apply();
                if(id < buttonTexts.length() - 1) {
                    showMsgDialog(id+1);
                }
            }
        })
        .setNegativeButton("Tutup", null)
        .create()
        .show();
    }
    

    调用显示对话框依据

    showMsgDialog(0);
    

    **已编辑**

    private void onPetunjukButtonClick () {
        SharedPreferences preferences = getSharedPreferences("MYPREFS", MODE_PRIVATE);
        String data = preferences.getString("key", ""); 
        int index = 0;
        if (!data.equals ("")) {
            int i = 0;
            for (String text : dataTexts) {
                if (data.equals (text) {
                    index = i;
                    break;
                }
                i++;
            }
        }
        showMsgDialog (index);
    }