2011-01-31 14 views
5

क्योंएंड्रॉयड TextView और नल पॉइंटर एक्सेप्शन

TextView test = (TextView) findViewById(R.id.testTextView); 
test.getText(); 

एक नल पॉइंटर एक्सेप्शन पैदा होता है? आईडी सही है, testTextView को मेरी एक्सएमएल लेआउट फ़ाइल में सही ढंग से घोषित किया गया है।

उत्तर

23

findViewById के लिए एकमात्र कारण यह है कि यदि आप वैध आईडी पास कर रहे हैं तो शून्य वापस लौटने के लिए यह है कि आप या तो गलत सामग्री दृश्य (setContentView के साथ) सेट कर रहे हैं या सामग्री दृश्य सेट नहीं कर रहे हैं।

+0

अपनी पोस्ट के लिए धन्यवाद, लेकिन ऐसा नहीं है। मैं 'onCreate' में 'setContentView' को कॉल कर रहा हूं। – SK9

+0

क्या आप अपना पूरा ऑनक्वेट और एक्सएमएल लेआउट साझा कर सकते हैं? – Cristian

+0

स्वच्छ प्रोजेक्ट ने जो कुछ भी समस्या तय की है, ठीक है। कुत्सित नरक। – SK9

2

आपने शायद setContentView नहीं कहा है। आप पहले से ही फुले हुए विचारों के तत्व प्राप्त करने के लिए केवल findViewById का उपयोग कर सकते हैं।

आप दृश्य को बढ़ाने के लिए लेआउटइनफ्लेटर का भी उपयोग कर सकते हैं, लेकिन शायद यह नहीं है कि आप क्या चाहते हैं।

+0

आपकी पोस्ट के लिए धन्यवाद, लेकिन यह नहीं है। मैं 'onCreate' में 'setContentView' को कॉल कर रहा हूं। – SK9

+0

धन्यवाद। लेकिन यह काम नहीं कर रहा है। मैं चाहता हूं कि हर कोई समझाने की कोशिश करना बंद कर दे और चलिए इसके बजाय एक कामकाजी उदाहरण तैयार कर सकें जिसका हम उपयोग कर सकते हैं। मैं एक स्पष्टीकरण का परीक्षण नहीं कर सकता। मुझे नहीं पता कि setcontentview को किस पर कॉल करना है। कौन सा पैरामीटर? मैं आपको -1 देता हूं क्योंकि उपयोग करने के लिए कुछ भी नहीं है। कृपया टिप्पणी करना बंद करें और समस्या को हल करना शुरू करें। –

2

क्या आप वाकई टेक्स्ट एक्सवी सही एक्सएमएल पर सेट हैं? उदाहरण के लिए यदि आप एक संवाद है कि एक कस्टम एक्सएमएल लोड करता है बन रहे हैं, उस xml आप dialog.findViewById(R.id.testTextView);

तरह Falmarri कहा में यह उल्लेख करना होगा से एक तत्व प्राप्त करने के लिए, दृश्य फुलाया किया जाना है। मैं समझता हूं कि आपने इसे एक नई परियोजना बनाकर हल किया है, लेकिन अभी भी भविष्य के उपयोगकर्ताओं के लिए इसका उल्लेख करना सोचा है।

2

मुझे लगता है कि आपने TextView को परिभाषित करने के बाद setContentView (..) लिखा होगा। इन्हें उलट दें, और इसे काम करना चाहिए।

बदलें:

TextView test = (TextView) findViewById(R.id.testTextView); 
. 
. 
setContetView(..) 

करने के लिए:

setContetView(..) 
. 
. 
TextView test = (TextView) findViewById(R.id.testTextView); 
0

यह भी हो सकता है कि आप दो फ़ाइलों में गतिविधि को परिभाषित किया। उदाहरण के लिए लेआउट और लेआउट-वी 21 और आईडी जैसी कुछ जानकारी उनमें से एक पर गायब है। तो सभी गतिविधि के लेआउट

संबंधित मुद्दे