2016-03-31 12 views
0

イメージのURLを取得するためにJSON Objを解析しています。 私はこのコードを使用しています。URLからイメージを取得する方法は?エラー

private Drawable LoadImageFromWebOperations(String strPhotoUrl) { 
    try { 
     InputStream is = (InputStream) new URL(strPhotoUrl).getContent(); 
     Drawable d = Drawable.createFromStream(is, "src name"); 
     Log.e("TAGG", strPhotoUrl); 
     return d; 
    } catch (Exception e) { 
     Log.e("TAGG", e.toString()); 
     return null; 
    } 
} 

しかし、これはAsyncTaskの別のスレッドで行う必要があるというエラーが表示されます。しかし、どのようにDrawableをImageViewに挿入するのですか? DoInBackground()はUI要素にアクセスできません。また、JSON objを解析してURLを取得するまでは、URLにアクセスできません。だから私の状況ではどのような解決策を使うことができますか?ありがとう!

+0

[Picasso](http://square.github.io/picasso/)などの[Android用画像読み込みライブラリ](http://android-arsenal.com/tag/46)のいずれかを使用してください。 。彼らはあなたのために背景のスレッドなどを処理します。 – CommonsWare

+0

@CommonsWareには、外部ライブラリを使用する以外の方法はありません。私はライブラリを使うのが初めてです。私が理解するのを助けてくれますか?ありがとう。 –

+0

AndroidにはPicassoの使用に関するチュートリアルがたくさんあります。実際には、私は最後に確認しました、彼らのgit repoはREADMEにいくつかの例がありました – zgc7009

答えて

1

onPostExecute()からアクセスできます。

したがって、APIを呼び出してバックグラウンドスレッドでデータを取得できます。イメージがダウンロードされたら、onPostExecute()メソッドでイメージをImageViewに設定できます。

+0

しかし、 'InputStream is =(InputStream)new URL(strPhotoUrl).getContent();'これは 'onPostExecute'にありません –

+0

いいえ、あなたはバックグラウンドスレッドで画像をダウンロードし、実行後にその画像を使用します。 – Swayam

+0

私が質問で言及したように、私は 'doInBackground()'ではURLを持っていないのでできません。 onPostExecute()でURLを解析する必要があります。それが理由です。だから私は別の 'AsyncTask'を使用する必要がありますか? –

関連する問題