使用Java编写android应用程序进行编码时非常陌生。至此,我已经将代码包括在内。此时,我只是试图从网站获取HTML。我一直在搜寻到这一点的方式。我的清单中确实有<uses-permission android:name="android.permission.INTERNET" />
。我调用代码以在oncreate事件(新的URLParser)中获取html。最初,我试图在logcat中查看html,但onPostExecute事件中的代码仍然存在。程序以这种方式运行良好,但是html并未显示在logcat的详细部分中。因此,我向该应用程序添加了一个临时按钮和文本视图。该按钮的onClick设置为调用“ showHTML”。应用程序加载完毕,当我按下按钮时,它崩溃了。所以我似乎看不到logcat中的html或按下按钮后的textview。
package com.example.brewerycruiser;
import androidx.appcompat.app.AppCompatActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import java.io.IOException;
import android.util.Log;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new URLParser();
}
public void showHTML (View view) {
TextView HTMLview =
view.getRootView().findViewById(R.id.textView);
HTMLview.setText(doc.toString());
}
Document doc = null;
public class URLParser extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
try {
doc = Jsoup.connect("https://www.coloradobrewerylist.com/brewery/").userAgent("Mozilla/5.0").get();
} catch (IOException ex) {
ex.printStackTrace();
}
return null;
}
protected void onPostExecute(Void result) {
Log.v("DATA", doc.toString());
}
}
}
错误日志如下:
11-19 18:09:32.779 18293-18293/com.example.brewerycruiser E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.brewerycruiser, PID: 18293
java.lang.IllegalStateException: Could not execute method for android:onClick
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:402)
at android.view.View.performClick(View.java:5225)
at android.view.View$PerformClick.run(View.java:21195)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:5225)
at android.view.View$PerformClick.run(View.java:21195)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String org.jsoup.nodes.Document.toString()' on a null object reference
at com.example.brewerycruiser.MainActivity.showHTML(MainActivity.java:27)
at java.lang.reflect.Method.invoke(Native Method)
at androidx.appcompat.app.AppCompatViewInflater$DeclaredOnClickListener.onClick(AppCompatViewInflater.java:397)
at android.view.View.performClick(View.java:5225)
at android.view.View$PerformClick.run(View.java:21195)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5451)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
非常感谢您的帮助, 谢谢