有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java AsyncTask正在引发InvocationTargetException

我有一个使用异步任务的简单活动

EditText txt;

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder()
            .detectNetwork().permitAll().build();
    StrictMode.setThreadPolicy(policy);

    txt = (EditText) findViewById(R.id.edit_message);
    setContentView(R.layout.main);
}
public void connectToNetwork(View view)
{
    String address = "https://www.google.com";
        new DownloadWebpageText().execute(address);

}
private class DownloadWebpageText extends AsyncTask<String, Void, String>
{
    @Override
    protected String doInBackground(String... params)
      {
       return params[0] + ",Some thing";

      }

   @Override
   protected void onPostExecute(String result)
      {
       txt.setText(result); //this is an EditText

      }

}

为了简洁起见,我简化了代码,但是它抛出了InvocationTargetException,而没有执行onPostExecute方法。调试时,我无法理解任何内容。有什么帮助吗

Logcat错误:

05-08 00:16:44.045: E/AndroidRuntime(537): FATAL EXCEPTION: main
05-08 00:16:44.045: E/AndroidRuntime(537): java.lang.NullPointerException
05-08 00:16:44.045: E/AndroidRuntime(537):  at myApp.src.MyAppActivity$DownloadWebpageText.onPostExecute(MyAppActivity.java:162)
05-08 00:16:44.045: E/AndroidRuntime(537):  at myApp.src.MyAppActivity$DownloadWebpageText.onPostExecute(MyAppActivity.java:1)
05-08 00:16:44.045: E/AndroidRuntime(537):  at 安卓.os.AsyncTask.finish(AsyncTask.java:602)
05-08 00:16:44.045: E/AndroidRuntime(537):  at 安卓.os.AsyncTask.access$600(AsyncTask.java:156)
05-08 00:16:44.045: E/AndroidRuntime(537):  at 安卓.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:615)
05-08 00:16:44.045: E/AndroidRuntime(537):  at 安卓.os.Handler.dispatchMessage(Handler.java:99)
05-08 00:16:44.045: E/AndroidRuntime(537):  at 安卓.os.Looper.loop(Looper.java:137)
05-08 00:16:44.045: E/AndroidRuntime(537):  at 安卓.app.ActivityThread.main(ActivityThread.java:4424)
05-08 00:16:44.045: E/AndroidRuntime(537):  at java.lang.reflect.Method.invokeNative(Native Method)
05-08 00:16:44.045: E/AndroidRuntime(537):  at java.lang.reflect.Method.invoke(Method.java:511)
05-08 00:16:44.045: E/AndroidRuntime(537):  at com.安卓.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
05-08 00:16:44.045: E/AndroidRuntime(537):  at com.安卓.internal.os.ZygoteInit.main(ZygoteInit.java:551)
05-08 00:16:44.045: E/AndroidRuntime(537):  at dalvik.system.NativeStart.main(Native Method)

共 (2) 个答案

  1. # 1 楼答案

    您不需要设置内容视图,然后查找视图吗

    setContentView(R.layout.main);
    txt = (EditText) findViewById(R.id.edit_message);
    
  2. # 2 楼答案

    考虑到你的NullPointerException来自哪里(onPostExecute()),txt显然是null