How to handle Back button with in the dialog?

后端 未结 8 2173
无人共我
无人共我 2020-11-30 01:02

I am developing an application that when the button is pressed, it opens a dialog with OK and Cancel buttons.

It works fine.

When the user presses the back b

相关标签:
8条回答
  • 2020-11-30 01:19

    If you are using a DialogFragment, from what I can tell the right way to do it is to override onCancel()

    I noticed setOnCancelListener does not work, and setOnKeyListener works, but for me has the fun side effect that it swallows all keys if your dialog has an edit text.

    0 讨论(0)
  • 2020-11-30 01:21

    it is because when your Dialog opens then your window navigate its focused to Dialog. So now you have to handle key on your Dialog.

    0 讨论(0)
  • 2020-11-30 01:29

    Sounds like you want to set the OnCancelListener when you create the Dialog. It looks like this:

    dialog.setOnCancelListener(new DialogInterface.OnCancelListener() {         
        @Override
        public void onCancel(DialogInterface dialog) {
            //do whatever you want the back key to do
        }
    });
    
    0 讨论(0)
  • 2020-11-30 01:30
    dialog.setOnKeyListener(new Dialog.OnKeyListener() {
    
                @Override
                public boolean onKey(DialogInterface arg0, int keyCode,
                        KeyEvent event) {
                    // TODO Auto-generated method stub
                    if (keyCode == KeyEvent.KEYCODE_BACK) {
                        finish();
                        dialog.dismiss();
                    }
                    return true;
                }
            });
    
    0 讨论(0)
  • 2020-11-30 01:34

    Try this

     new AlertDialog.Builder(this).setOnKeyListener(new DialogInterface.OnKeyListener() {
    
                            @Override
                            public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) {
    
                                if(keyCode == KeyEvent.KEYCODE_BACK){
                                    Logger.d(TAG, "--------- Do Something -----------");
                                    return true;
                                }
                                return false;
    
    
                            }
                        })
    
    0 讨论(0)
  • 2020-11-30 01:37

    You need to override OnCancel method. This method calls on Back Key press. Here's code which works perfect to me.

     AlertDialog alertDialog;
    
        alertDialog.setOnCancelListener(new OnCancelListener() 
        {                   
               @Override
                public void onCancel(DialogInterface dialog) 
                 {
                   // TODO Auto-generated method stub
    
                        dialog.dismiss();                           
    
                }
    }); 
    

    Hope this will help you, and accept it if it is helpful to you.

    Thanks..

    0 讨论(0)
提交回复
热议问题