2014-02-10 4 views
0

У меня есть задача Async для получения массива json для загрузки spinner. Но в onPostExecute я получил Ошибка NetworkOnMainThreadException.В AsyncTask onPostExecute получена ошибка NetworkOnMainThreadException

// Ошибка здесь

while ((line = reader.readLine()) != null) 
{ 
    builder.append(line) ; 
} 

вот мой onPostExecute. ответ - ответ Http. Какая здесь ошибка?

protected void onPostExecute(String result) { 

      BufferedReader reader; 
      try { 
    reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 

       StringBuilder builder = new StringBuilder(); 

       String line = null; 

        //Error in here 
       while ((line = reader.readLine()) != null) 
        { 
        builder.append(line) ; 
        } 



       JSONTokener tokener = new JSONTokener(builder.toString()); 
       JSONArray finalResult = new JSONArray(tokener); 

       final String[] items = new String[finalResult.length()]; 

        // looping through All Contacts 
        for(int i = 0; i < finalResult.length(); i++){ 

         JSONObject c = finalResult.getJSONObject(i); 

         items[i]=c.getString("data_name"); 

        } 

        ArrayAdapter<String> adapter = new ArrayAdapter<String> (activity, android.R.layout.simple_spinner_item, items);  

        adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

        spin.setAdapter(adapter); 



      } catch (UnsupportedEncodingException e) { 
       e.printStackTrace(); 
      } catch (IllegalStateException e) { 
       e.printStackTrace(); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } catch (JSONException e) { 
       e.printStackTrace(); 
      } 


      super.onPostExecute(result); 

      //activity.startActivity(new Intent(activity, wanted.class)); 


      if (dialog != null) 
       dialog.dismiss(); 

     } 
+0

Единственное, что я вижу которые должны быть в 'onPostExecute()', являются кодом «Adapter» и «Dialog». Все остальное должно быть в 'doInBackground()' – codeMagic

+0

Не ** другое ** 'NetworkOnMainThreadException'! Пожалуйста, найдите, прежде чем задавать вопрос. Это происходит 10 раз в неделю. – Simon

+0

ПРОБЛЕМА РЕШАЛА. –

ответ

3

вы должны двигаться:

reader = new BufferedReader(new InputStreamReader(response.getEntity().getContent())); 
// .. 
while ((line = reader.readLine()) != null) 

в

AsyncTask.doInBackground() 

это где сетевые операции должны иметь место, onPostExecute на UI потоке

+0

Спасибо, что посмотрели –

Смежные вопросы