enter image description here非同期アンドロイドでメーカー
こんにちは皆、私は非同期を使用してAndroidのメーカーにインターネットから画像を挿入しようとしました。しかし、何らかの問題が発生したようで、runOnUIThreadを呼び出してAsyncの機能を有効にすることはできません。どうすれば修正できますか?どうもありがとうございます。
enter image description here非同期アンドロイドでメーカー
こんにちは皆、私は非同期を使用してAndroidのメーカーにインターネットから画像を挿入しようとしました。しかし、何らかの問題が発生したようで、runOnUIThreadを呼び出してAsyncの機能を有効にすることはできません。どうすれば修正できますか?どうもありがとうございます。
なぜあなたはonCreate()メソッド内でそのrunOnUiThread()を使用しますか? onCreate()はUIスレッドのみで呼び出されます。 onCreate()メソッド内でrunOnUiThread()を呼び出す方法はありません。
他の場所にしたい場合は、その方法は小文字で始まります。だから、Capital 'R'の代わりにsmall 'r'をタイプしてください。コードの下
用途:
runOnUiThread(new Runnable() {
@Override
public void run() {
}
});
そして、あなたは(doInBackground内で任意のUI関連のコードを実装するべきではありません)。 doInBackground()の完了後にUIを更新する場合は、onPostExecute()内にこれらのコード行を追加します。
runOnUIThread
はAsyncTask
には必要ありません。 UIスレッド上
private class LoadhinhtuInternet extends AsyncTask<String, Integer, Bitmap> {
@Override
protected Bitmap doInBackground(String... params) {
InputStream stream = null;
try {
URL url = new URL(params[0]);
stream = url.openConnection().getInputStream();
return BitmapFactory.decodeStream(stream);
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (stream != null) {
try {
stream.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return null;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
super.onPostExecute(bitmap);
if (bitmap != null) {
hinh.setImageBitmap(bitmap);
}
}
}
AsyncTask
でonPostExecute
実行されます。
コードを画像から質問本体に移動してください –
hinh.setImageBitmap(Bmp)を移動する必要があります。 onPostExecute()メソッドへの行。 AsyncTask内でonPostExecute()をオーバーライドします。 –