无法在Android Studio的图像视图中加载可绘制的内容



我试图从EditText捕获一个url,下载带有该url的图像并将其设置为ImageView。我不知道为什么,但是当我运行程序时,它没有显示任何图像。如果这有帮助,它返回一个异常:android.os.NetworkOnMainThreadException

这是我的主代码:

输入图片描述

您应该在UI ThreadMain Thread上运行您的Network代码。网络操作是密集的,需要一些时间来完成,最终导致阻塞主线程因此NetworkOnMainThreadException是例外。

为了解决这个问题,你可以启动一个新的后台线程来运行你的网络代码:

public class MainActivity extends AppCompatActivity {
//declare drawable as a class variable
Drawable drawable;
......
onCreate(...) {.... }
buttonPressed(View view) { ...}
public Drawable loadImageFromNet(String url) {
//lambda for Java 8
new Thread(() -> {
// do network operation here
try {
InputStream is = (InputStream) new URL(url).getContent();
drawable = Drawable.createFromStream(is, "src name");
} catch (Exception e) {
System.out.println("Exc" + e);
drawable = null;
}
}).start();
return drawable;
}
}

其他代码保持不变,代码应该与这个测试URL一起工作:

https://sample-videos.com/img/Sample-jpg-image-50kb.jpg

欢呼……

最新更新