2011-08-10 14 views
9

मूल रूप से, मेरे पास एक लेआउट में टेक्स्टव्यू है जिसे मैं पॉपअपविंडो के लिए उपयोग करता हूं। जब मैं कोई उपयोगकर्ता क्लिक करता हूं तो मैं यह पॉपअप विन्डो दिखाता हूं; मैं बटन क्लिक पर पॉपअपविंडो में टेक्स्ट को गतिशील रूप से बदलने में सक्षम होना चाहता हूं। हालांकि, findViewById (my_textview) .setText() कुछ भी प्रतीत नहीं होता है, और वास्तव में पॉपअपविंडो को तब दिखाई नहीं देता जब मैं बटन पर क्लिक करता हूं।एंड्रॉइड: पॉपअप विन्डो में टेक्स्ट व्यू के लिए setText()

मैं लेआउट xml ठीक से पाठ सेट कर सकता हूं।

कोई भी जानता है कि इसके साथ क्या चल रहा है? धन्यवाद

+1

क्या आप उत्तर के रूप में उत्तर दे सकते हैं और स्वीकार कर सकते हैं? इस तरह अन्य लोग समाधान ढूंढ सकते हैं यदि वे एक ही प्रश्न रखते हैं और यह अनुत्तरित प्रश्न सूची को साफ रखता है। धन्यवाद! – Jeroen

उत्तर

15

मैं समस्या हल की तरह से पहले

दृश्य आपको popupWindow फुलाया का उपयोग कर "findViewById" के साथ देखा गया खोजने के लिए सक्षम हो जाएगा। किसी भी कारण से आपको popup.getContentView() को कॉल करने की आवश्यकता है। खोजने के बजाय findViewById खोजें ViewById (जहां पॉपअप आपकी पॉपअपविंडो ऑब्जेक्ट है)। मुझे पहले NullPointerException नहीं मिल रहा था इसलिए मुझे बिल्कुल यकीन नहीं है कि इस मुद्दे को क्यों ठीक किया गया लेकिन ऐसा हुआ।

तो कोड की तरह कुछ चला जाता है:

PopupWindow पीडब्लू = नए PopupWindow (अपने लेआउट और पैरामीटर यहाँ);

((टेक्स्ट व्यू) pw.getContentView()। FindViewById (R.id.my_textview))। सेटटेक्स्ट ("हैलो वहाँ");

pw.showAtLocation (यहां आपके पैरा);

+0

आपने मुझे एक टन बचाया, ईमानदारी से धन्यवाद! –

0

आप केवल यह

private View viewPopUp; 
private PopupWindow windowPopUp; 
//... 
//form_popup is the template to the popup 
viewPopUp = mContext.getLayoutInflater().inflate(R.layout.form_popup, null); 
windowPopUp = new PopupWindow(viewPopUp, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT, true); 
//... 
viewPopUp.findViewById(R.id.popupTopTitle); 
viewPopUp.findViewById(R.id.popupMiddleMsg); 
//... 
संबंधित मुद्दे