PostExecute中的setText给了我错误

时间:2017-06-04 20:27:41

标签: java android

我在尝试从服务器解析JSON时为两个视图设置了setText但是在运行时它给了我错误。 这是我的代码:

protected void onPostExecute(String result) {
            super.onPostExecute(result);
            textView.setText(result);
            newTextView.setText(result);
        }

这是我的错误:

FATAL EXCEPTION: main
    java.lang.NullPointerException
    at com.musicianfocus.ben.wordedfm.MainActivity$JSONTask.onPostExecute(MainActivity.java:254)
    at com.musicianfocus.ben.wordedfm.MainActivity$JSONTask.onPostExecute(MainActivity.java:208)
    at android.os.AsyncTask.finish(AsyncTask.java:631)
    at android.os.AsyncTask.access$600(AsyncTask.java:177)
    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:644)
    at android.os.Handler.dispatchMessage(Handler.java:99)
    at android.os.Looper.loop(Looper.java:137)
    at android.app.ActivityThread.main(ActivityThread.java:4745)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at java.lang.reflect.Method.invoke(Method.java:511)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
    at dalvik.system.NativeStart.main(Native Method)
    06

1 个答案:

答案 0 :(得分:0)

从AsyncTask访问视图是不好的做法。事实上,当AsyncTask完成时,您的活动可能已经死亡,您将尝试访问不存在的视图。相反,我建议你从这里使用名为EventBus的库:https://github.com/greenrobot/EventBus

这个想法如下:您在onPostExecute中发布一个事件,并设置正确的值。然后,您可以在活动或片段中捕获该事件,并从那里更新您的视图。这是一个架构上更好的解决方案。