2013-04-09 3 views
0

URL에서 이미지를 표시하도록하려고합니다. 메신저 문제는 AsyncTask와 관련이 있지만 반환했습니다. 지난 주에이 코드를 여러 번 읽었을 때 나는 아직도 내가 잘못 가고있는 곳을 볼 수 없다.안드로이드 - URL에서 이미지를 가져 와서 AsyncTask를 사용하여 ImageView에 표시

인터넷 권한이 설정되고 난

를 반환되는 변수에 연결되는

img = BitmapFactory.decodeStream(is); 

밤은로 정의 된 IMG 변수를 말할 수있는 나는 지금까지 어떤 로그 캣

ImageView eventImage2; 
eventImage2 = (ImageView) findViewById(R.id.eventImage2); 

new imageupdate().execute(); 

public class imageupdate extends AsyncTask<Bitmap, Void, Bitmap> { 

    @Override 
    protected Bitmap doInBackground(Bitmap... url) { 


     URL url1; 

     try { 


      url1 = new URL("http://masterzangetsu.eu/Apps/NowIGetYou/banner.png"); 
      HttpURLConnection connection = (HttpURLConnection) url1.openConnection(); 

      InputStream is = connection.getInputStream(); 
      Bitmap img = BitmapFactory.decodeStream(is); 


     } catch (MalformedURLException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 


     return img; 

    } 

    protected void onPreExecute(String result) { 


    } 

    protected void onPostExecute(Bitmap result) { 
     super.onPostExecute(result); 

     eventImage2.setImageBitmap(result); 

    } 

} 

을 받고 없습니다입니다

return img; 

변수 결과와 img가 모두 null로 반환됩니다.

+2

'result'를'null'로 설정하고'img = result'를 사용하면 ...'img'는'null'을 의미합니다. 'img'와'result'를 바꾸려고 했습니까? – codeMagic

+0

이 코드를 디버그하여 오류가 발생한 곳을 확인하려고 했습니까? – Egor

+0

@codeMagic yes ... 그게 .. 문제 야. – Pragnani

답변

1

변경이

Bitmap result = null; 

     InputStream is = connection.getInputStream(); 
     Bitmap img = BitmapFactory.decodeStream(is); 


     img = result; 

Bitmap img = null; 

     InputStream is = connection.getInputStream(); 
     Bitmap img = BitmapFactory.decodeStream(is); 


     result = img; 

doInBackground()return result합니다. 당신은 그들을 바꾸어 놓았으므로 아무렇게나 'img'는 null이 될 것입니다.

또한 스레드에서이 방법을 실행하지 않으므로 을 doInBackground()에 사용할 수 없습니다. 해당 번호를 Log으로 설정하거나 ToastonPostExecute() 또는 onProgressUpdate()에 입력해야합니다. 이것들은 내가 보는 것들입니다. 문제가 계속 발생하면 구체적으로 무엇이 더 명확해야합니다. 어떤 UI 업데이트가 아닌 다른 AsyncTask의 다른 방법 중 하나를 수행해야합니다 - 당신은 그 수와 문제가

AsyncTask 무엇인지 좀 더 정확하게해야한다 반환되지 않는 것을 볼 수 디버그 및 사용 중단 점에 필요합니다 doInBackground()을 입력하거나 Activity에 값을 다시 입력하여 UI을 업데이트 할 수 있습니다.

+0

변경 사항을 편집하고 문제의 범위를 좁히려고 시도 함 –

+0

@ 라이언, 너 아직도이 문제가 있니? – codeMagic

관련 문제