Java 安卓:为什么我的安卓应用程序显示一个空的布局,然后在我试图从网站检索信息时崩溃?
我试图检索网站的源代码,但我的应用程序既不显示gui,也不打印到日志中 这是我的密码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.
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之间加了一个空格:所以它也会出现在评论中。我做错什么了吗?