0

인터넷 데이터를 사용하는 안드로이드 응용 프로그램을 만들고 있습니다. 나는 min sdk 버전 2.2에서 개발했으나 이제는 3.0으로 변경했습니다. 내 문제는 일부 구성 요소가 작동하지 않는다는 것입니다. 내 생각 엔 버전 2.2의 일부 코드는 3.0에서 사용되지 않을 수 있습니다. 그러나 나는 그것이 작동하도록하기 위해 무엇을해야하는지 잘 모른다.ImageView는 android min sdk 2.2에서 작동하지만 3.0으로 변경하면 안됩니까?

예를 들어, ImageView는 2.2에서 작동합니다. 그러나 3.0에서는 그렇지 않습니다.

  //******satellite url 
    private void satellite() { 
     // TODO Auto-generated method stub 
     ImageView imgView =(ImageView)findViewById(R.id.satellite); 
     Drawable drawable = LoadImageFromWeb("http://www.pagasa.dost.gov.ph/wb/sat_images/satellite.gif"); 
     imgView.setImageDrawable(drawable); 

    } 

또 다른 json 파서입니다. 2.2에서는 완벽하게 작동하지만 3.0에서는 작동하지 않습니다.

//json stuffs , setText on textViews in main menu 
    private void jsonStuffs() { 
     // TODO Auto-generated method stub 
    //JSON PARSER & HOME PAGE TEXTVIEWS 

     client = new DefaultHttpClient(); 
     //new Read().execute("id"); 
     //http client codes only no parser !! 
     GetMethodEx test = new GetMethodEx(); 
     String returned; 
     try { 
      returned = test.getInternetData(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

     try{ 
      String jsonStr = test.getInternetData(); //punta sa GetMethodEx 
       JSONObject obj = new JSONObject(jsonStr); 

       //find temperature sa JSON sa webpage 
       String temperature = obj.getString("temperature"); 
       TextView tvTemp = (TextView)findViewById(R.id.temp); 
       tvTemp.setText(temperature); 

       //find sunrise sa JSON sa webpage 
       String sunrise = obj.getString("sunrise"); 
       TextView tvSunrise = (TextView)findViewById(R.id.sunrise); 
       tvSunrise.setText("Sunrise: " + sunrise); 

       //find sunset sa JSON sa webpage 
       String sunset = obj.getString("sunset"); 
       TextView tvSunset = (TextView)findViewById(R.id.sunset); 
       tvSunset.setText("Sunset: " + sunset); 


     } 
     //catch (JSONException e) { 
      // e.printStackTrace(); 
      //} 
     catch (Exception e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 
    } 

이 프로젝트에서 어떠한 오류도 발생하지 않았습니다. 데이터가 표시되지 않고 이미지 뷰가 표시되지 않습니다.

누군가가 도울 수 있기를 바랍니다. 미리 감사드립니다 :)

답변

3

나는 이유는 안드로이드 3.0 이상, 당신은 HTTP 요청과 같은 별도의 스레드에서 다음의 UI 스레드와 같은 네트워크 작업을 할 필요가 있다고 생각합니다. UI 스레드의 코드를 직접 사용하므로 HoneyComb 아래에서 작동합니다. 따라서 웹 요청을 별도의 스레드에 넣고 UI에 넣어야합니다. AsyncTask은 좋은 옵션입니다.

자세한 내용은 check this link.

+0

고마워요! 나는 그것이 그것을 설명한다고 생각한다. 별도의 스레드를 사용해 보겠습니다. –