2012-09-21 14 views
8

काम नहीं कर रहा है मेरी गतिविधि एक संवाद खोलती है। जब यह बंद हो जाता है तो मुझे निष्पादित करने के लिए ReloadTable() फ़ंक्शन की आवश्यकता होती है। तो मैं setOnDismissListener का उपयोग करने की कोशिश कर रहा हूं लेकिन यह ट्रिगर नहीं हो रहा है। क्या कोई मदद कर सकता है कि मैं क्या गलत कर रहा हूं?AlertDialog setOnDismissListener

धन्यवाद!

AlertDialog.Builder builder; 
AlertDialog alertDialog; 
Context mContext = getApplicationContext(); 
LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); 
View layout = inflater.inflate(R.layout.transaction, null); 
builder = new AlertDialog.Builder(new ContextThemeWrapper(TransactionsList.this , R.style.dialogwithoutdim)); 
builder.setView(layout); 
alertDialog = builder.create(); 
alertDialog.setOnDismissListener(new OnDismissListener() { 
    public void onDismiss(final DialogInterface dialog) { 
     ReloadTable(); 
    } 
}); 

builder.show(); 
+0

यही कारण है कि यह आपके लिए शायद काम नहीं करता है, यह है: http://stackoverflow.com/ ए/1826 9965/89818 – caw

उत्तर

1

इस मामले में आप alertDialog.setOnCancelListener(listener) का उपयोग करना चाहिए, और dismissDialog(id) साथ alertDialog.setOnDismissListener काम करता है।

+0

यह काम नहीं करता है। मैं संवाद को खारिज नहीं कर रहा हूं। मुझे उम्मीद है कि संवाद को खारिज करने के लिए बैक बटन दबाया जाएगा ... क्यों खारिज नहीं होगा? – lumpawire

+0

@Override \t सार्वजनिक शून्य onBackPressed() { \t dismissDialog (आईडी) \t \t super.onBackPressed(); \t} क्या आपने सेट बटन के साथ setOnCancelListener को दबाया है? – Yahor10

+0

नहीं। – lumpawire

3

ठीक है ... मैंने इसे स्वयं समझ लिया।

मुझे DialogInterface.OnCancelListener को लागू करना था और ऑनकैंक विधि जोड़ें। इसने काम कर दिया!

+3

'setOnDismissListener' केवल एपीआई 17 से उपलब्ध है, मुझे लगता है कि आपकी समस्या थी। –

+0

@YoannHercouet दरअसल, एपीआई स्तर 1 ?! http://developer.android.com/reference/android/app/Dialog.html#setOnDismissListener%28android.content.DialogInterface.OnDismissListener%29 – caw

+0

केवल AlerDialog.builder के माध्यम से सेट करने के लिए। एल्टरडियलॉग में यह एपीआई स्तर 1. – Enyby

9
public class MyActivity extends Activity implements DialogInterface.OnCancelListener{ 
    @Override 
    public void onCreate(Bundle state) { 
     ..... 
     alertDialog.setOnCancelListener(this); 
     alertDialog.show(); 
    } 
    @Override 
    public void onCancel(DialogInterface dialog) { 
     dialog.dismiss(); 
     ..... 
    } 
} 
+1

से मुझे कॉलबैक चाहिए जब संवाद को खारिज कर दिया जाता है तो आपने मुझे ऑनडिस्मिस लिस्टनर का उपयोग करने का विचार दिया .... @ upvoted .. आपने अपना दिन बचाया ........... धन्यवाद वीवीवी ...... –

1

मुझे असली समस्या मिली।

आपको कॉलर में नहीं, संवाद में दिखाएं।

कोशिश करो :)

4

आप AlertDialog.Builder को setOnCancelListener करने के लिए है:

AlertDialog.Builder alertDialogBuilder = new AlertDialog.Builder(
       this); 
alertDialogBuilder.setOnCancelListener(new DialogInterface.OnCancelListener() { 
      @Override 
      public void onCancel(DialogInterface dialog) { 
       dialogmenu = false; 
      } 
     }) 
संबंधित मुद्दे