2011-06-01 14 views

उत्तर

50

आप setOnCancelListener उपयोग कर सकते हैं:

dialog.setOnCancelListener(new DialogInterface.OnCancelListener() 
{ 
    @Override 
    public void onCancel(DialogInterface dialog) 
    { 
     MyActivity.this.finish(); 
    } 
}); 

आप केवल अपने गतिविधि समाप्त करने के लिए की जरूरत है। संवाद स्वचालित रूप से खारिज कर दिया जाएगा।

+2

मुझे सही दिशा में इशारा करते हुए के लिए +1, प्रभाव मैं खोज रहा था onDismissListener लेकिन :-) – Skizit

+0

काफी निकट onDismissListener भी सकारात्मक और नकारात्मक बटन के ऊपर लिख है। इसलिए यदि आप बैकप्रेस किए गए ओवरराइट को ओवरराइट करना चाहते हैं और डायलॉग के बाहर कहीं भी क्लिक करना चाहते हैं, तो कैंसल लिस्टर बेहतर है। – thinzar00

22
dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
        @Override 
        public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
         if (keyCode == KeyEvent.KEYCODE_BACK) { 
           dialog.cancel(); 
           return true; 
          } 
         return false; 
        } 
       }) 
2
@Override 
public Dialog onCreateDialog(Bundle savedInstanceState){ 
    return new Dialog(getActivity(), getTheme()){ 
    @Override 
    public void onBackPressed(){ 
     // dismiss(); 
     // activityReference.finish(); 
    } 
    }; 
} 
0
मेरे मामले में

मैं DialogFragment, जो अभी भी है एक संवाद .. तो मैं onCancel() मेरी संवाद में ओवरराइड का उपयोग, और यह गतिविधि की onBackPressed() तरह से प्रतिक्रिया करता है हर मैं वापस बटन पर क्लिक करें संवाद है दिखाया गया है।

@Override 
public void onCancel(DialogInterface dialog) 
{ 
    super.onCancel(dialog); 
    Log.i("RecDialog.onCancel()", "onCancel"); 
} 

आशा है कि मैंने मदद की।

0

अंततः मैंने बैक कुंजी सुनने के लिए मेरे संवाद में एक प्रमुख श्रोता जोड़ा। onBackPressed() ओवरराइड करने के रूप में सुरुचिपूर्ण नहीं है लेकिन यह काम करता है। यहाँ कोड है:

dlgDetails = new AlertDialog.Builder(this) 
    .setOnKeyListener(new DialogInterface.OnKeyListener() { 
     @Override 
     public boolean onKey (DialogInterface dialog, int keyCode, KeyEvent event) { 
      if (keyCode == KeyEvent.KEYCODE_BACK && 
       event.getAction() == KeyEvent.ACTION_UP && 
       !event.isCanceled()) { 
       dialog.cancel(); 
       showDialog(DIALOG_MENU); 
       return true; 
      } 
      return false; 
     } 
    }) 
    //(Rest of the .stuff ...) 
संबंधित मुद्दे