java - AsyncTask error Android App crashes -


मेरा उकरा कोड:

  सुरक्षित बनाम क्रिएट (बंडल सहेजे गए इन्स्टैंसस्टेट) {super.onCreate ( savedInstanceState); setContentView (R.layout.board); ArrayList & LT; स्ट्रिंग & gt; पासिंग = नया अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); नया AsyncTaskParseJson ()। निष्पादित करें (); }  

यह मेरा कोड है:

  सार्वजनिक वर्ग AsyncTaskParseJson AsyncTask को बढ़ाता है & lt; स्ट्रिंग, स्ट्रिंग, स्ट्रिंग & gt; {अंतिम स्ट्रिंग TAG = "असिनकाटाकार्सेजसन.जावा"; स्ट्रिंग yourJsonStringUrl = "मेरे यूआरएल यहाँ"; JSONArray डेटा JsonArr = null; @ ओवरराइड संरक्षित शून्य पर प्र्रेक्सिक्यूट () {} @SuppressWarnings ("null") @ ओवरराइड सार्वजनिक स्ट्रिंग करनाइनाबैकग्राउंड (स्ट्रिंग ... arg0) {अंतिम स्ट्रिंग [] values ​​= null; कोशिश {// हमारे जेसन पार्सर JsonParser jParser = नया JsonParser इन्स्तांत (); // यूआरएल से JSON स्ट्रिंग मिल JSONObject json = jParser.getJSONFromUrl (yourJsonStringUrl); // उपयोगकर्ताओं के डेटा की संख्या प्राप्त करें; जेसनएआरआर = जेसन। जेजेएसनअरे ("प्रतिक्रिया"); // सभी उपयोगकर्ताओं के माध्यम से लूप (इंट I = 1; i & lt; dataJsonArr.length (); i ++) {JSONObject c = dataJsonArr.getJSONObject (i); स्ट्रिंग टेक्स्ट = c.getString ("text"); मूल्यों [i] = पाठ; } // अर्रेएडप्टर & lt; स्ट्रिंग & gt; एडेप्टर = नया अर्रे एडाप्टर & lt; स्ट्रिंग & gt; (बोर्ड। इस, आर। लेट। एटम, आर.आईड.लैबेल, मान); // list1.setAdapter (adapter); } पकड़ (जेसनएक्स एक्सप्शन ई) {e.printStackTrace (); } वापसी नल; } @Override protected void onPostExecute (स्ट्रिंग strFromDoInBg) {}}  

तो, जब मैं अनुभाग मानों [i] इस तरह से टिप्पणी करता हूं तो यह गतिविधि शुरू हो जाती है:

  // मान [i] = पाठ;  

लेकिन जब यह टिप्पणी नहीं की जाती है, तो ऐप केवल क्रैश हो जाता है मैं स्ट्रिंग [] सरणी वापस करने के लिए InBackground करना चाहता हूं, मैं यह कैसे करूँ?

आपको < / P>

  मान = नया स्ट्रिंग [dataJsonArr.length ()];  

यह भी ध्यान दें कि टिप्पणी की गई पंक्तियां doInbackground में हैं। लेकिन आप एक पृष्ठभूमि धागा से यूआई अपडेट नहीं कर सकते। इसलिए नीचे onPostExecute पर जाना चाहिए।

  // ArrayAdapter & lt; स्ट्रिंग & gt; एडेप्टर = नया अर्रे एडाप्टर & lt; स्ट्रिंग & gt; (बोर्ड। इस, आर। लेट। एटम, आर.आईड.लैबेल, मान); // list1.setAdapter (adapter);   

एक स्ट्रिंग सरणी का उपयोग करने के बजाय इसे ArrayList & lt; स्ट्रिंग & gt;

का उपयोग करना बेहतर है एग्गस प्रकार को भी बदलने के लिए

  पब्लिक क्लास AsyncTaskParseJson AsyncTask & lt; स्ट्रिंग, स्ट्रिंग, अर्रेलिस्ट & lt; स्ट्रिंग & gt; & gt; {  

तब

  @ ओवरराइड पब्लिक अर्रे लिस्ट & lt; स्ट्रिंग & gt; DoInBackground (स्ट्रिंग ... arg0) {ArrayList & lt; स्ट्रिंग & gt; मान = नया अर्रेलिस्ट & lt; स्ट्रिंग & gt; (); कोशिश {// हमारे जेसन पार्सर JsonParser jParser = नया JsonParser इन्स्तांत (); // यूआरएल से JSON स्ट्रिंग मिल JSONObject json = jParser.getJSONFromUrl (yourJsonStringUrl); // उपयोगकर्ताओं के डेटा की संख्या प्राप्त करें; जेसनएआरआर = जेसन। जेजेएसनअरे ("प्रतिक्रिया"); // सभी उपयोगकर्ताओं के माध्यम से लूप (इंट I = 1; i & lt; dataJsonArr.length (); i ++) {JSONObject c = dataJsonArr.getJSONObject (i); स्ट्रिंग टेक्स्ट = c.getString ("text"); values.add (पाठ); }} पकड़ (जेसनएक्स एक्सप्शन ई) {e.printStackTrace (); } वापसी मूल्य; }  

तब

  @Override सुरक्षित शून्य पर पोस्टएक्सएक्यूट (अर्रेलिस्ट & lt; स्ट्रिंग & gt; परिणाम) {super.onPostExecute (परिणाम); ArrayAdapter & LT; स्ट्रिंग & gt; एडाप्टर = नए अर्रेएडप्टर & lt; स्ट्रिंग & gt; (बोर्ड.इस, आर। लेट। एटम, आर.ड.लैबल, परिणाम); list1.setAdapter (अनुकूलक); }  

यह भी सुनिश्चित करें कि list1 को इससे पहले आरंभ किया जा रहा है setAdapter को कोज़ में मुझे कोड दिखाई नहीं देता जहां list1 < / कोड> आरंभ किया गया है।


Comments

Popular posts from this blog

ios - How do I use CFArrayRef in Swift? -

eclipse plugin - Run java code error: Workspace is closed -

c - Error on building source code in VC 6 -