java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
at android.widget.Toast.<init>(Toast.java:138)
at android.widget.Toast.makeText(Toast.java:440)
at com.example.mobileapplication.fragment.RoadConditionQueryFragment$1.handleMessage(RoadConditionQueryFragment.java:58)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6959)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
Android 最愁人的莫过于各种异步了,今天写了一个项目是 在碎片里每隔3秒去获取一下道路拥挤状态
new Thread(new Runnable() {
@Override
public void run() {
while (isRunning){
/*在这里去获取*/
Thread.sleep(3000);
}
}
}).start();
因为网络获取需要时间,当网络获取到之前,用户退出了碎片
Toast.makeText(getContext(), "网络错误,道路状况更新失败", Toast.LENGTH_SHORT).show();
这是 Toast就会报上面的异常,解决方法很简单
只要加个if (getContext() == null)的判断就可以了,还有记得在碎片销毁时 isRunning = false;就可以了
public void onDestroy() {
isRunning = false;
}
如果大家有更好的解决办法,记得私信我哦