Java 从线程设置imageView

Java 从线程设置imageView,java,android,Java,Android,我正在使用freind下载图片并在图像视图中设置;但是,我得到了这个错误: 只有创建视图层次结构的原始线程才能接触其视图 这是我的密码 ImageView profilePicture =.... Thread thread = new Thread() { @Override public void run() { profilePic.setImageBitmap(image_profile); } }; thread.start(); 图像配置文件

我正在使用freind下载图片并在
图像视图中设置
;但是,我得到了这个错误:

只有创建视图层次结构的原始线程才能接触其视图

这是我的密码

ImageView profilePicture =....
Thread thread = new Thread() {
    @Override
    public void run() {
        profilePic.setImageBitmap(image_profile);
    }
};
thread.start();
图像配置文件
位图
是有效的
位图
文件。(我通过调试进行了检查。)


此线程正在
OnCreate
方法中运行。

您无法在其他线程上更新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();

您不能直接从
线程
更新UI。相反,请使用
runOnUiThread()
或等效工具

替换此

profilePic.setImageBitmap(image_profile);
YourActivityName.this.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        profilePic.setImageBitmap(image_profile);
    }
});
使用此

profilePic.setImageBitmap(image_profile);
YourActivityName.this.runOnUiThread(new Runnable() {
    @Override
    public void run() {
        profilePic.setImageBitmap(image_profile);
    }
});

问题不在于
位图
。问题是您试图在一个单独的
线程中执行
UI
操作。对于您给出的代码,没有理由使用
线程
。卸下
线程
。如果您正在执行其他未显示的操作,则可以使用或更新
ImageView
,方法不包括
doInBackground()
,因为它不会在
UI