Как сделать последний щелчок на Nested AlertDialog в качестве основной кнопки. SetOnClickListener - PullRequest
0 голосов
/ 08 мая 2018

РЕДАКТИРОВАТЬ : у меня есть ситуация Вложенный AlertDialog, как это:

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 onClick как он? Последний щелчок на каждом вложенном AlertDialog и сделать логику, если нажата кнопка petunjuk, он перейдет к последнему щелчку Nested AlertDialog, в противном случае он пойдет первым Снова AlertDialog. до последней кнопки Selesai кнопка нажата. на последний клик он останется навсегда. любая помощь оценит это. спасибо

1 Ответ

0 голосов
/ 08 мая 2018

Можем ли мы сделать диалог в этом формате?

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);
}
...