यदि आप Android 2.2 (एपीआई स्तर 8 या उन्नत) लक्षित कर रहे हैं आप
public final boolean showDialog (int id, Bundle args)
का उपयोग और Bundle
में अपने तर्क दे सकते हैं। documentation देखें।
यदि आप पुराने एंड्रॉइड संस्करणों का समर्थन करना चाहते हैं, तो आपको अपने तर्क Activity
कक्षा के सदस्यों में सहेजना चाहिए और फिर उन्हें अपने onPrepareDialog
फ़ंक्शन से एक्सेस करना चाहिए। ध्यान दें कि onCreateDialog
आपकी आवश्यकताओं के अनुरूप नहीं होगा क्योंकि इसे केवल संवाद निर्माण के लिए बुलाया जाता है।
class MyActivity {
private static int MY_DLG = 1;
private String m_dlgMsg;
private showMyDialog(String msg){
m_dlgMsg = msg;
showDialog(MY_DLG);
}
private doSomething() {
...
showMyDlg("some text");
}
protected void onCreateDialog(int id){
if(id == MY_DLG){
AlertDialog.Builder builder = new AlertDialog.Builder(this);
....
return builder.create();
}
return super.onCreateDialog(id);
}
@Override
protected void onPrepareDialog (int id, Dialog dialog){
if(id == MY_DLG){
AlertDialog adlg = (AlertDialog)dialog;
adlg.setMessage(m_dlgMsg);
} else {
super.onPrepareDialog(id, dialog);
}
}
}
बहुत बढ़िया, अच्छा लगता है :) केवल समस्या यह है कि जहां आप DoSomething(), मैं, एक इनलाइन onClick ईवेंट के भीतर से showDialog बोल रहा हूँ तो यह माध्यम से मान पास होने के लिए नहीं लगता है, i ' मुझे यकीन नहीं है कि क्यों ... – jsw
'showDialog (int id, बंडल args)' एपीआई 13 में बहिष्कृत –