2

私は友人を使って写真をダウンロードし、に設定していImageViewます。ただし、次のエラーが発生します。

ビュー階層を作成した元のスレッドのみがそのビューにアクセスできます。

これは私のコードです。

ImageView profilePicture =....
Thread thread = new Thread() {
    @Override
    public void run() {
        profilePic.setImageBitmap(image_profile);
    }
};
thread.start();

image_profileBitmapは有効なBitmapファイルです。(デバッグで確認しました。)

このスレッドはOnCreateメソッドで実行されています。

4

3 に答える 3

4

から直接 UI を更新することはできませんThread。代わりに、runOnUiThread()または同等のものを使用してください。

これを置き換えます

profilePic.setImageBitmap(image_profile);

これで

YourActivityName.this.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        profilePic.setImageBitmap(image_profile);
    }
});
于 2013-04-13T16:12:16.990 に答える
3

別のスレッドで ui を更新することはできません。以下のように、メインの ui スレッドで ui を更新します。

Thread thread = new Thread()
{
    @Override
    public void run() {
    runOnUiThread(new Runnable() //run on ui thread
    {
        public void run() 
        { 
            profilePic.setImageBitmap(image_profile);

        }
    });
    }
    };
   thread.start();
于 2013-04-13T16:12:08.380 に答える
1

問題は についてではありませんBitmapUI問題は、別の で何かをしようとしていることですThread。あなたが与えたコードでは、Thread. を取り外しますThread。表示されていない他のことを行っている場合は、で実行されない以外の方法でrunOnUiThreadまたはを使用しAsyncTaskて更新できますImageViewdoInBackground()UI

于 2013-04-13T16:12:50.990 に答える