Android Don't dismiss AlertDialog after clicking PositiveButton

后端 未结 5 2050
情歌与酒
情歌与酒 2020-12-12 20:32

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.

相关标签:
5条回答
  • 2020-12-12 21:08

    Even Simpler:

    final AlertDialog alertDialog = new AlertDialog.Builder(context).setView(v)
                    .setPositiveButton(android.R.string.ok, null)
                    .setNegativeButton(android.R.string.cancel, null)
                    .show();
    
            Button b = alertDialog.getButton(AlertDialog.BUTTON_POSITIVE);
            b.setOnClickListener(new View.OnClickListener() {
    
                @Override
                public void onClick(View view) {
                    //Do Your thing
                }
            });
    
    0 讨论(0)
  • 2020-12-12 21:13

    Answer in Kotlin :

    val dialog = AlertDialog.Builder(context)
        .setView(v)
        .setTitle(R.string.my_title)
        .setPositiveButton(android.R.string.ok, null)
        .setNegativeButton(android.R.string.cancel, null)
        .create()
    
    dialog.setOnShowListener {
    
            dialog.getButton(AlertDialog.BUTTON_POSITIVE).setOnClickListener {
                // Apply logic here
            }
    
        }
    
    0 讨论(0)
  • 2020-12-12 21:14

    based on the most voted answer for How to prevent a dialog from closing when a button is clicked

    final AlertDialog d = new AlertDialog.Builder(context)
                .setView(v)
                .setTitle(R.string.my_title)
                .setPositiveButton(android.R.string.ok, null) //Set to null. We override the onclick
                .setNegativeButton(android.R.string.cancel, null)
                .create();
    
        d.setOnShowListener(new DialogInterface.OnShowListener() {
    
            @Override
            public void onShow(DialogInterface dialog) {
    
                Button b = d.getButton(AlertDialog.BUTTON_POSITIVE);
                b.setOnClickListener(new View.OnClickListener() {
    
                    @Override
                    public void onClick(View view) {
                        // TODO Do something
    
                    }
                });
            }
        });  
    

    I believe you need to override the positive button's handler. Add your logic to dismiss the dialog when a certain condition is met.

    0 讨论(0)
  • 2020-12-12 21:29

    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();
    
    0 讨论(0)
  • 2020-12-12 21:31

    I do it like this:

        final AlertDialog dialog = new AlertDialog.Builder(this)
                .setCancelable(false)
                .setPositiveButton("YES", null)
                .setNegativeButton("NO", null)
                .show();
    
        Button positiveButton = dialog.getButton(AlertDialog.BUTTON_POSITIVE);
        positiveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
           //     Toast.makeText(SysManagerActivity.this, "dialog is open", Toast.LENGTH_SHORT).show();
    
            }
        });
    
    0 讨论(0)
提交回复
热议问题