मेरे पास फ़ंक्शन के साथ संवाद के लिए उपयोग वर्ग है:
public static void buildCustomDialog(Context contextRef, View dialogContentView)
{
AlertDialog.Builder builder = new AlertDialog.Builder(contextRef);
builder.setView(dialogContentView);
builder.setNegativeButton(contextRef.getString(R.string.std_cancel), null);
AlertDialog dialog = builder.create();
dialog.show();
}
और जो दृश्य मैं पास करता हूं उसमें क्लिकलिस्टर्स के साथ दो बटन होते हैं। सब कुछ बढ़िया काम करता है सिवाय इसके कि जब उपयोगकर्ता कस्टम बटनों में से किसी एक पर क्लिक करता है तो मैं संवाद को खारिज नहीं कर सकता। तो वे दूसरे पृष्ठ पर नेविगेट करते हैं, वापस हिट करते हैं और संवाद अभी भी वहां है।
मैं संवाद करने से पहले मेरे द्वारा बनाए जा रहे कस्टम क्लिक श्रोताओं में संवाद का संदर्भ कैसे प्राप्त कर सकता हूं?
मैंने हर कल्पनीय विकल्प की कोशिश की है। मेरा नवीनतम प्रयास एक कस्टम इंटरफ़ेस के साथ एक कस्टम डायलॉगफ्रैगमेंट बनाना है, लेकिन फिर भी, अलर्टडिअलॉग बिल्डर संवाद बनाने से पहले दृश्य (और इसलिए बटन और उनके श्रोता) बन जाते हैं।
मुझे लगता है कि यह बहुत आसान होना चाहिए और मुझे कुछ याद आ रहा है ...
3 जवाब
आपको अपने कस्टम बटन पर onClick
श्रोता सेट करना होगा।
इसे आजमाएं:
AlertDialog.Builder builder = new AlertDialog.Builder(contextRef);
builder.setView(dialogContentView);
Button btnOk= (Button) dialogContentView.findViewById(R.id.btn_ok);
builder.setNegativeButton(contextRef.getString(R.string.std_cancel), null);
AlertDialog dialog = builder.create();
dialog.show();
btnOk.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog.dismiss();
}
});
इतना ही !!
आसान। वापसी संवाद संदर्भ, इसे इकट्ठा करें जहां आप इस विधि का आह्वान करते हैं। अपने खारिज बटन श्रोता में जांचें कि यदि संवाद संदर्भ में वैध वस्तु है। यदि हाँ तो इस संवाद को खारिज कर दें।
कोटलिन में कुछ इस तरह (एंको डायलॉग्स का उपयोग करके) यह कस्टम लेआउट में बटनों की सूची दिखाता है, प्रत्येक डायलॉग बंद करता है:
private var closeDialogAction: () -> Unit = {}
private fun showDialog(greetings: List<Greeting>) {
val alert = context.alert {
customView {
verticalLayout {
greetings.forEach {
textView {
text = it.name
setOnClickListener {
// Make some other necessary actions
closeDialogAction()
}
}
}
}
}
}.build()
closeDialogAction = {alert.dismiss()}
alert.show()
}
संबंधित सवाल
नए सवाल
android
एंड्रॉइड Google का मोबाइल ऑपरेटिंग सिस्टम है, जिसका उपयोग प्रोग्रामिंग या डिजिटल डिवाइस (स्मार्टफोन, टैबलेट, ऑटोमोबाइल्स, टीवी, वियर, ग्लास, IoT) को विकसित करने के लिए किया जाता है। एंड्रॉइड से संबंधित विषयों के लिए, एंड्रॉइड-विशिष्ट टैग जैसे कि एंड्रॉइड-इरादे, एंड्रॉइड-गतिविधि, एंड्रॉइड-एडॉप्टर आदि का उपयोग करें। विकास या प्रोग्रामिंग के अलावा अन्य प्रश्नों के लिए, लेकिन एंड्रॉइड फ्रेमवर्क से संबंधित हैं, इस लिंक का उपयोग करें: https: // android.stackexchange.com।