2014-02-10 3 views
0

json 배열에서 스피너를로드하기위한 비동기 작업이 있습니다. 하지만 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

감사합니다. –

관련 문제