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