java - 设置标题时ItemDetail Fragment中的Android NullPointerException
问题描述
我不知道为什么,但我收到报告说我的许多用户NullPointerException
在此行中获得了一个:
appBarLayout.setTitle("אזעקה (" + mItem.datetime + ")");
我已经尝试了很多方法来捕获这个异常,但我就是不知道它是如何到达这条线并得到一个NullPointerException
.
首先,我确保它appBarLayout
不为空。然后我检查了我的mItem.datetime
确实包含它应该包含的日期时间。
这是我的代码:
mItem = AlertsDetails.items_map.get(getArguments().getString(ARG_ITEM_ID));
Activity activity = this.getActivity();
if (mItem == null || mItem.datetime == null)
{
activity.finish();
}
CollapsingToolbarLayout appBarLayout = (CollapsingToolbarLayout) activity.findViewById(R.id.toolbar_layout);
if (appBarLayout != null) {
appBarLayout.setTitle("אזעקה (" + mItem.datetime + ")");
appBarLayout.setBackgroundResource(R.mipmap.alert_background);
}
我在这里错过了什么?appBarLayout
两者mItem.datetime
都不是空的,但该setTitle
方法创建了一个,这怎么可能NullPointerException
?
这些是我得到的错误日志:
java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2955)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:3030)
at android.app.ActivityThread.-wrap11 (Unknown Source)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1696)
at android.os.Handler.dispatchMessage (Handler.java:105)
at android.os.Looper.loop (Looper.java:164)
at android.app.ActivityThread.main (ActivityThread.java:6938)
at java.lang.reflect.Method.invoke (Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run (Zygote.java:327)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1374)
Caused by: java.lang.NullPointerException:
at com.morha.cumtaalerts.fragments.ItemDetailFragment.onCreate (ItemDetailFragment.java:63)
at android.support.v4.app.Fragment.performCreate (Fragment.java:2328)
at android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1379)
at android.support.v4.app.FragmentTransition.addToFirstInLastOut (FragmentTransition.java:1188)
at android.support.v4.app.FragmentTransition.calculateFragments (FragmentTransition.java:1071)
at android.support.v4.app.FragmentTransition.startTransitions (FragmentTransition.java:115)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether (FragmentManager.java:2379)
at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute (FragmentManager.java:2337)
at android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:2244)
at android.support.v4.app.FragmentManagerImpl.dispatchStateChange (FragmentManager.java:3255)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated (FragmentManager.java:3205)
at android.support.v4.app.FragmentController.dispatchActivityCreated (FragmentController.java:195)
at android.support.v4.app.FragmentActivity.onStart (FragmentActivity.java:597)
at android.support.v7.app.AppCompatActivity.onStart (AppCompatActivity.java:177)
at android.app.Instrumentation.callActivityOnStart (Instrumentation.java:1340)
at android.app.Activity.performStart (Activity.java:7191)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2918)
谢谢!
解决方案
return;
完成后添加Activity
:
if (mItem == null || mItem.datetime == null)
{
activity.finish();
return;
}
推荐阅读
- java - java定时器,如何实现timertask
- java - Java 小程序不显示 FXML 形式
- websocket - Websocket 设计 - 多条路由(许多连接)或处理所有事情的单个路由?
- c# - 如何使用 FluentAssertions 控制字典成员的“平等”
- c# - 单一责任原则和 LINQ to Entity
- javascript - 如何在 javascript 中使用 CryptoJS
- php - PHP - 强制 eval() 在全局范围内运行
- javascript - 节点js需要执行功能
- android - 如何忽略触摸事件,让安卓系统处理?
- android - BottomAppBar 忽略“layout_gravity”,始终显示在顶部