Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/224.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 安卓:为什么我的安卓应用程序显示一个空的布局,然后在我试图从网站检索信息时崩溃?_Java_Android - Fatal编程技术网

Java 安卓:为什么我的安卓应用程序显示一个空的布局,然后在我试图从网站检索信息时崩溃?

Java 安卓:为什么我的安卓应用程序显示一个空的布局,然后在我试图从网站检索信息时崩溃?,java,android,Java,Android,我试图检索网站的源代码,但我的应用程序既不显示gui,也不打印到日志中 这是我的密码 import android.os.AsyncTask; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.util.Log; import java.io.InputStream; import java.io.InputStreamReader; import java.net.

我试图检索网站的源代码,但我的应用程序既不显示gui,也不打印到日志中

这是我的密码

import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.concurrent.ExecutionException;

public class MainActivity extends AppCompatActivity {

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

    @Override
    protected String doInBackground(String... urls) {

        String result = "";
        URL url;
        HttpURLConnection urlConnection = null;

        try{

            url = new URL(urls[0]);
            urlConnection = (HttpURLConnection)url.openConnection();

            InputStream in = urlConnection.getInputStream();

            InputStreamReader reader = new InputStreamReader(in);

            int data = reader.read();           //start reading inputstream reader

            while(data!=-1){
                char current = (char) data;

                result += current;

                data = reader.read();

            }
            return result;

        }
        catch (Exception e){

            e.printStackTrace();
            return null;
        }


    }
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);


    DownloadTask task = new DownloadTask();
    String result = null;

    try {
        result = task.execute("https://www.therichest.com/top-lists/top-100-richest-celebrities").get();

        Log.i("Contents of the url:", result);

    }
    catch (InterruptedException e) {
        e.printStackTrace();
    }
    catch (ExecutionException e) {
        e.printStackTrace();
    }

}
它显示一个空白屏幕30-45秒,然后崩溃,日志打印以下内容

07-06 21:08:32.300 2025-2025/com.example.jimmy.guesstherich E/AndroidRuntime: FATAL EXCEPTION: main
                                                                              Process: com.example.jimmy.guesstherich, PID: 2025
                                                                              java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.jimmy.guesstherich/com.example.jimmy.guesstherich.MainActivity}: java.lang.NullPointerException: println needs a message
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2440)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500)
                                                                                  at android.app.ActivityThread.access$900(ActivityThread.java:163)
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362)
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                  at android.os.Looper.loop(Looper.java:148)
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5585)
                                                                                  at java.lang.reflect.Method.invoke(Native Method)
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730)
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
                                                                               Caused by: java.lang.NullPointerException: println needs a message
                                                                                  at android.util.Log.println_native(Native Method)
                                                                                  at android.util.Log.i(Log.java:160)
                                                                                  at com.example.jimmy.guesstherich.MainActivity.onCreate(MainActivity.java:67)
                                                                                  at android.app.Activity.performCreate(Activity.java:6279)
                                                                                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
                                                                                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2393)
                                                                                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2500) 
                                                                                  at android.app.ActivityThread.access$900(ActivityThread.java:163) 
                                                                                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1362) 
                                                                                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                  at android.os.Looper.loop(Looper.java:148) 
                                                                                  at android.app.ActivityThread.main(ActivityThread.java:5585) 
                                                                                  at java.lang.reflect.Method.invoke(Native Method) 
                                                                                  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:730) 
                                                                                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:620)
知道怎么回事吗

我是初学者,所以我为任何错误道歉

我也遵循视频教程,并三重检查,一切都是一样的。他的作品非常好。如果重要的话,那就是Rob Percival的“完整的Android开发课程”


提前谢谢,我很感激

此行将始终返回null(因为asynktask是异步的):

如果您尝试使用null对象打印日志,则会导致崩溃


空布局是因为应用程序无法连接到网站,并且接收到超时异常。

此行将始终返回null(因为asynktask是异步的):

如果您尝试使用null对象打印日志,则会导致崩溃


空布局是因为应用程序无法连接到网站,并且接收到超时异常。

您面临此问题,因为您将错误的
URL
检查浏览器中的URL

result = task.execute("https://www.therichest.com/top-lists/top-100-richest-celebrities").get();
这里是演示URL

result = task.execute("http://api.androidhive.info/contacts/").get();

您正面临此问题,因为您将错误的
URL
检查浏览器中的URL

result = task.execute("https://www.therichest.com/top-lists/top-100-richest-celebrities").get();
这里是演示URL

result = task.execute("http://api.androidhive.info/contacts/").get();

你的链接有效吗?并在MainActivity中处理结果中的null。链接是否正常?并在MainActivity中处理结果中的null。根据Android文档,execute返回任务本身。也许你也可以在回答中添加这些信息谢谢你的帮助。你能告诉我我能做什么/搜索来解决这个问题吗?根据Android文档,execute返回任务本身。也许你也可以在回答中添加这些信息谢谢你的帮助。你能告诉我我能做什么/搜索来解决这个问题吗?谢谢!!!!这很奇怪,我的url在浏览器中工作,但在应用程序中不工作,但即使我使用http,它在应用程序中也不工作。你的演示url工作完全正常HTTPS对你来说不是问题,你需要一个合适的工作url好友。但是即使我直接从浏览器复制url,它也不工作。。我不明白为什么当我复制https://en.wikipedia.org/wiki/名人时它不起作用。我在https之间加了一个空格:所以它也会出现在评论中。我做错什么了吗?谢谢!!!!这很奇怪,我的url在浏览器中工作,但在应用程序中不工作,但即使我使用http,它在应用程序中也不工作。你的演示url工作完全正常HTTPS对你来说不是问题,你需要一个合适的工作url好友。但是即使我直接从浏览器复制url,它也不工作。。我不明白为什么当我复制https://en.wikipedia.org/wiki/名人时它不起作用。我在https之间加了一个空格:所以它也会出现在评论中。我做错什么了吗?