2013-03-21 10 views
32

इस तरह तार अतिरिक्त करने के लिए जोड़ा जा रहा है:एंड्रॉयड Intent.getStringExtra() अशक्त रिटर्न

Intent i = new Intent(); 
i.putExtra("Name", edt_name.getText()); 
i.putExtra("Description", edt_desc.getText()); 
i.putExtra("Priority", skb_prior.getProgress()); 
setResult(RESULT_OK, i); 
finish(); 

यह कैसे मैं उन्हें onActivityResult() में निकालने के लिए कोशिश है:

String name = data.getStringExtra("Name"); 
String desc = data.getStringExtra("Description"); 
int prior = data.getIntExtra("Priority", 50); 

लेकिन दूसरे के बाद कोड ब्लॉक name और descnull हैं, हालांकि prior यह उचित मूल्य है। इसके अलावा, डीबगर में मैं देख सकता हूं कि data.mExtras.mMap में आवश्यक स्ट्रिंग्स हैं, लेकिन केवल इसके पहले अनुरोध के बाद।

+0

क्या आप सुनिश्चित हैं कि 'पूर्व' का उचित मूल्य है और डिफ़ॉल्ट रूप से एक (50) जिसे आप सेट कर रहे हैं? –

+0

हां, लेकिन समस्या 'edt_name.getText()' में थी, जो 'स्ट्रिंग' नहीं लौटाती है लेकिन कुछ उत्तराधिकारी वर्ग हो सकती है? – hotkey

उत्तर

70

जब आप सम्मिलित अपने Extras जोड़ने की कोशिश कर रहा .toString()

i.putExtra("Name", edt_name.getText().toString()); 

आप में CharSequence मूल्य देख रहे हैं लेकिन आप इसे एक String कन्वर्ट करने के लिए getStringExtra() कॉल करने के लिए की जरूरत है। जाहिर है, बस Strings के लिए ऐसा करें। आप अपने int के लिए सही मान देखते हैं क्योंकि यह सही ढंग से किया जाता है

+1

धन्यवाद, यह काम करता है, साथ ही '" "+ edt_name.getText()', जो सुंदर नहीं दिखता है :) – hotkey

+1

यह काम करता है क्योंकि '" एक स्ट्रिंग अक्षर है और आप इसे जोड़ रहे हैं। यह वैसे ही काम करता है जैसे '2" '2" '2 '' के लिए आता है। जो कुछ भी शाब्दिक में जोड़ा जा रहा है उसे अपनी कक्षा के 'toString' फ़ंक्शन के माध्यम से स्ट्रिंग में परिवर्तित किया जाता है। – MCeley

+0

@codeMagic, आप क्यों कहते हैं कि यह 'ऑब्जेक्ट' है? क्या यह 'CharSequence' नहीं है? – Pacerier

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