Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 图像未在Android中显示_Java_Android - Fatal编程技术网

Java 图像未在Android中显示

Java 图像未在Android中显示,java,android,Java,Android,我一直在尝试编写代码,让应用程序从网页获取图像链接,将其转换为位图,然后显示图像。但是,即使studio没有显示错误,图像也不会显示。代码写在下面。请原谅我不熟悉这个术语,使用错误 package com.example.android.web; import androidx.appcompat.app.AppCompatActivity; import android.graphics.Bitmap; import android.graphics.Bitmap

我一直在尝试编写代码,让应用程序从网页获取图像链接,将其转换为位图,然后显示图像。但是,即使studio没有显示错误,图像也不会显示。代码写在下面。请原谅我不熟悉这个术语,使用错误

 package com.example.android.web;

    import androidx.appcompat.app.AppCompatActivity;

    import android.graphics.Bitmap;
    import android.graphics.BitmapFactory;
    import android.os.AsyncTask;
    import android.os.Bundle;
    import android.widget.ImageView;

    import java.io.InputStream;
    import java.io.InputStreamReader;
    import java.net.HttpURLConnection;
    import java.net.URL;
    import java.util.ArrayList;
    import java.util.Random;
    import java.util.regex.Matcher;
    import java.util.regex.Pattern;

    public class MainActivity extends AppCompatActivity {
        ArrayList<String> url = new ArrayList<String>();
        ArrayList<String> name = new ArrayList<String>();

        public class DOwnloadTask extends AsyncTask<String, Void, String> {

            @Override
            protected String doInBackground(String... strings) {
                URL url;
                int data;
                HttpURLConnection connect;
                String result = "";
                try {
                    url = new URL(strings[0]);
                    connect = (HttpURLConnection) url.openConnection();
                    InputStream in = connect.getInputStream();
                    InputStreamReader reader = new InputStreamReader(in);
                    data = reader.read();
                    while (data != -1) {
                        char curr = (char) data;
                        result += curr;
                        data = reader.read();

                    }
                    return result;
                } catch (Exception e) {
                    return null;
                }
            }
        }

        public class Imagedownloader extends AsyncTask<String, Void, Bitmap> {

            @Override
            protected Bitmap doInBackground(String... strings) {
                URL url;
                int data;
                HttpURLConnection connect;
                String result = "";
                try {
                    url = new URL(strings[0]);
                    connect = (HttpURLConnection) url.openConnection();
                    connect.connect();
                    InputStream in = connect.getInputStream();
                    Bitmap bitmap = BitmapFactory.decodeStream(in);
                    return bitmap;
                } catch (Exception e) {
                    return null;
                }
            }
        }

            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                ImageView img = findViewById(R.id.imageView);
                DOwnloadTask task = new DOwnloadTask();
                String result = "";
                try {
                    result = task.execute("http://www.posh24.se/kandisar").get();
                    String[] a = result.split(
                            "<div class=\"listedArticles\">");
                    Pattern pattern = Pattern.compile("alt=\"(.*?)\"");
                    Matcher m = pattern.matcher(a[0]);
                    while (m.find()) {
                        name.add(m.group(1));
                    }

                      pattern=Pattern.compile("img src=\"(.*?)\"");
                      m=pattern.matcher(a[0]);
                    while(m.find()){
                        url.add(m.group(1));
                    }
                    Random r=new Random();
                    int chosen=r.nextInt(url.size());
                    Imagedownloader downloader=new Imagedownloader();
                    Bitmap bit;
                    bit=downloader.execute(url.get(chosen)).get();
                    img.setImageBitmap(bit);
                } catch (Exception e) {

                }
package com.example.android.web;
导入androidx.appcompat.app.appcompat活动;
导入android.graphics.Bitmap;
导入android.graphics.BitmapFactory;
导入android.os.AsyncTask;
导入android.os.Bundle;
导入android.widget.ImageView;
导入java.io.InputStream;
导入java.io.InputStreamReader;
导入java.net.HttpURLConnection;
导入java.net.URL;
导入java.util.ArrayList;
导入java.util.Random;
导入java.util.regex.Matcher;
导入java.util.regex.Pattern;
公共类MainActivity扩展了AppCompatActivity{
ArrayList url=新的ArrayList();
ArrayList name=新的ArrayList();
公共类DOwnloadTask扩展了AsyncTask{
@凌驾
受保护的字符串背景(字符串…字符串){
网址;
int数据;
HttpURLConnection;
字符串结果=”;
试一试{
url=新url(字符串[0]);
connect=(HttpURLConnection)url.openConnection();
InputStream in=connect.getInputStream();
InputStreamReader reader=新的InputStreamReader(in);
data=reader.read();
while(数据!=-1){
char curr=(char)数据;
结果+=当前值;
data=reader.read();
}
返回结果;
}捕获(例外e){
返回null;
}
}
}
公共类Imagedownloader扩展异步任务{
@凌驾
受保护位图doInBackground(字符串…字符串){
网址;
int数据;
HttpURLConnection;
字符串结果=”;
试一试{
url=新url(字符串[0]);
connect=(HttpURLConnection)url.openConnection();
connect.connect();
InputStream in=connect.getInputStream();
位图位图=位图工厂.decodeStream(in);
返回位图;
}捕获(例外e){
返回null;
}
}
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView img=findViewById(R.id.ImageView);
DOwnloadTask任务=新建DOwnloadTask();
字符串结果=”;
试一试{
结果=任务。执行(“http://www.posh24.se/kandisar).get();
字符串[]a=result.split(
"");
Pattern=Pattern.compile(“alt=\”(.*?\”);
Matcher m=pattern.Matcher(a[0]);
while(m.find()){
名称.添加(m.group(1));
}
pattern=pattern.compile(“imgsrc=\”(.*?\”);
m=模式匹配器(a[0]);
while(m.find()){
url.add(m.group(1));
}
随机r=新随机();
int selected=r.nextInt(url.size());
Imagedownloader downloader=新的Imagedownloader();
位图位;
bit=downloader.execute(url.get(selected)).get();
设置图像位图(位);
}捕获(例外e){
}

如果在运行期间imageview是空的,请使用Glide library显示图像,以帮助确定问题所在,我们将不胜感激

要将URL中的图像插入imageView,请使用:

Glide.with(this).load(url).into(img);

您的网络代码可能会因
networkMainThreadException
而崩溃,这可能是由于您在
AsyncTask
上的
get()
调用造成的。更重要的是,在未记录的情况下决不能捕获
异常。在
catch
块中,添加
Log.e(“AkulApp”,“异常执行网络I/O”,e)
。然后,。所有这些都应该在您阅读的关于Android应用程序开发的任何书籍中进行演示。我按照您的建议记录了它,这就是我在网络I/O java.io.IOException中遇到的异常:到www.posh24.se的明文HTTP流量不允许异常在网络I/O java.lang.nullpointerExceptionn:尝试在空对象引用上调用虚拟方法“java.lang.String[]java.lang.String.split(java.lang.String)”。使用
https
URL。它与Android Studio或毕加索有什么关系?它的流行程度仅次于Glide。