2016-08-22 72 views
-2
public class MainActivity extends Activity { 
ImageView downloadedimg; 
public class ImageDownloader extends AsyncTask<String,void,Bitmap> { 


    @Override 
    protected Bitmap doInBackground(String... urls) { 
     try{ 

      URL url=new URL(urls[0]); 
      HttpURLConnection connection=(HttpURLConnection) url.openConnection(); 
      connection.connect(); 
      InputStream inputStream=connection.getInputStream(); 
      Bitmap mybitmap= BitmapFactory.decodeStream(inputStream); 
      return mybitmap; 
     } 
     catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
     return null; 
    } 
} 

public void downloadImage(View view) { 

    ImageDownloader task = new ImageDownloader; 
    Bitmap myImage; 
    try { 
     myImage = task.execute("https://www.google.co.in/url?sa=i&rct=j&q=&esrc=s&source=images&cd=&cad=rja&uact=8&ved=0ahUKEwiOw5HvydXOAhVKqo8KHYHfAtIQjRwIBw&url=https%3A%2F%2Fen.wikipedia.org%2Fwiki%2FBart_Simpson&psig=AFQjCNFZSwEG2tjp15Km14uuzEsmZUZ_MQ&ust=1471974330385306"); 
     downloadedimg.setImageBitmap(myImage); 
    } 
    catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    downloadedimg=(ImageView)findViewById(R.id.imageView); 
} 

在行 myImage = task.execute(「some url to image address online」);task.execute url與位圖不匹配

的編譯顯示錯誤

不兼容的類型

需要:android.graphics.Bitmap

發現:android.os.AsyncTask 「<」 java.lang.String中,空隙,機器人。 graphics.Bitmap>

Java的托架的雙碼盈不聲明

的一部分@edit謝謝FO r先前的建議我搜索並找到.get()方法 我使用任務(「」)。get()返回位圖圖像和代碼編譯沒有錯誤,但現在nothings發生時,我點擊下載圖像按鈕

+0

閱讀此:https://developer.android.com/reference/android/os/AsyncTask.html - 示例和說明足以讓您瞭解罪魁禍首並自行修復代碼。 –

回答

0

AsyncTask .execute不會返回下載的對象。它不能,AsyncTask的整個想法就是它的異步。任何需要使用結果的代碼都應放在onPostExecute(用於UI更改)或doInBackground(用於處理數據)末尾。