androidandroid-alertdialog

Android Don't dismiss AlertDialog after clicking PositiveButton


Can I just don't dismiss my AlertDialog after clicking PositiveButton?

I would like to remain the dialog to show something update on my ArrayAdapter listWords.

This is my code.

AlertDialog.Builder sayWindows = new AlertDialog.Builder(MapActivity.this);

final EditText saySomething = new EditText(MapActivity.this);

sayWindows.setPositiveButton("ok",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    say = userName + " Says: "+saySomething.getText();
                    showPosition.setText(say);                      
                }
            });

sayWindows.setNegativeButton("cancel",
            new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            });

sayWindows.setAdapter(listWords, null);
sayWindows.setView(saySomething);
sayWindows.create().show();

Solution

  • After looking at @Little Child solution, I try to make this. Let us know if this works for you.

        AlertDialog.Builder sayWindows = new AlertDialog.Builder(
                MapActivity.this);
        final EditText saySomething = new EditText(MapActivity.this);
        sayWindows.setPositiveButton("ok", null);
        sayWindows.setNegativeButton("cancel", null);
        sayWindows.setAdapter(listWords, null);
        sayWindows.setView(saySomething);
    
        final AlertDialog mAlertDialog = sayWindows.create();
        mAlertDialog.setOnShowListener(new DialogInterface.OnShowListener() {
    
            @Override
            public void onShow(DialogInterface dialog) {
    
                Button b = mAlertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
                b.setOnClickListener(new View.OnClickListener() {
    
                    @Override
                    public void onClick(View view) {
                        // TODO Do something
                       say = userName + " Says: "+saySomething.getText();
                       showPosition.setText(say); 
                    }
                });
            }
        });
        mAlertDialog.show();