2012-02-15 5 views
0

私は、APP開始時にインターネットにアクセスする2つの機能を持っています。コンテンツが読み込まれている間にポップアップダイアログを表示するには、thisポストを参照として使用しようとしました。私が使用する非同期タスクのために返すもの

二つの機能は以下のとおりです。

getImage(); //Gets an image from the internet for an imageview 
getJson(); //Where the app goes an parses a JSON object for a lazy load listview. 

私は上記参照ポストに遭遇しています問題は、私は、タスクの戻りがnull作ってみるということですが、それは時にクラッシュするアプリを引き起こしIこれを行う。だから私はこれを持っている:

private class DownloadTask extends AsyncTask<String, Void, Object> { 
protected Object doInBackground(String... args) { 
    Log.i("MyApp", "Background thread starting"); 

    try { 
     ImageView i = (ImageView) findViewById(R.id.currdoodlepic); 
     Bitmap bitmap = BitmapFactory 
       .decodeStream((InputStream) new URL(imageURL) 
         .getContent()); 
     i.setImageBitmap(bitmap); 
    } catch (MalformedURLException e) { 
     e.printStackTrace(); 
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
    getJson("all"); 

    return "replace this with your data object"; 
} 

私は何を返すか分からない。

答えて

0

私は正確な答えhereを見つけました。ここでは、コードは次のようになります。

ImageView mChart = (ImageView) findViewById(R.id.imageview); 
String URL = "http://www...anything ..."; 

mChart.setTag(URL); 
new DownloadImageTask.execute(mChart); 

Taskクラス:

public class DownloadImagesTask extends AsyncTask<ImageView, Void, Bitmap> { 

ImageView imageView = null; 

@Override 
protected Bitmap doInBackground(ImageView... imageViews) { 
    this.imageView = imageViews[0]; 
    return download_Image((String)imageView.getTag()); 
} 

@Override 
protected void onPostExecute(Bitmap result) { 
    imageView.setImageBitmap(result); 
} 


private Bitmap download_Image(String url) { 
    ... 
} 
0

あなたはポストの実行に必要なものの依存doInBackgroundメソッドの型戻り値:

void postExecute(Object result); // AsyncTask method 

パラメータ「結果は」doInBackgroundの戻り値です。したがって、何も必要ない場合は、NULLを返します。

+0

は、アプリがクラッシュします。 – Nick

+0

クラッシュが確実に起こっていますか?そうでない場合は、postExecuteを使用しますか? – damson

関連する問題