代码之家  ›  专栏  ›  技术社区  ›  morha13

设置标题时itemdail片段中的android nullpointerexception

  •  -2
  • morha13  · 技术社区  · 7 年前

    我不知道为什么,但我得到报告说我的许多用户 NullPointerException 在这一行中: appBarLayout.setTitle("אזעקה (" + mItem.datetime + ")");

    我已经尝试了很多方法来捕捉这个异常,但是我不知道它是如何到达这条线并得到一个 空指针异常 .

    首先我确定 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);
        }
    

    我错过了什么?这怎么可能 AppBayStayes 日期时间 不是空的,但是 setTitle 方法创建 空指针异常 ?

    以下是我得到的错误日志:

    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)
    

    谢谢您!

    1 回复  |  直到 7 年前
        1
  •  1
  •   HedeH    7 年前

    添加 return; 在你完成 Activity :

    if (mItem == null || mItem.datetime == null)
    {
        activity.finish();
        return;
    }