当我快速切换片段时为什么我的应用程序崩溃

Xal*_*oju 6 android runtime-error

当我使用navigationDrawer更改片段时,我的应用程序有时会崩溃.致命错误没有多大帮助,我该如何解决这个问题呢?谢谢

FATAL EXCEPTION: main
     Process: acr.acr_app, PID: 29425
   java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Resources android.content.Context.getResources()' on a null object reference
   at android.view.ViewConfiguration.get(ViewConfiguration.java:359)
   at android.view.View.<init>(View.java:3656)
   at android.view.View.<init>(View.java:3751)
   at android.view.ViewGroup.<init>(ViewGroup.java:492)
   at android.widget.LinearLayout.<init>(LinearLayout.java:200)
   at android.widget.LinearLayout.<init>(LinearLayout.java:196)
   at android.widget.LinearLayout.<init>(LinearLayout.java:192)
   at android.widget.LinearLayout.<init>(LinearLayout.java:188)
   at android.widget.TableRow.<init>(TableRow.java:61)
   at acr.acr_app.MyFragment3$2.onChildAdded(MyFragment3.java:170)
   at com.google.android.gms.internal.zzaer.zza(Unknown Source)
   at com.google.android.gms.internal.zzagp.zzSu(Unknown Source)
   at com.google.android.gms.internal.zzags$1.run(Unknown Source)
   at android.os.Handler.handleCallback(Handler.java:739)
   at android.os.Handler.dispatchMessage(Handler.java:95)
   at android.os.Looper.loop(Looper.java:135)
Run Code Online (Sandbox Code Playgroud)

Fragment3 line170:onStart()监听器

  tableRow = new TableRow(getContext());
  tableRow.setLayoutParams(new TableLayout.LayoutParams(
  TableLayout.LayoutParams.WRAP_CONTENT,
  TableLayout.LayoutParams.WRAP_CONTENT, 1.0f));
Run Code Online (Sandbox Code Playgroud)

MrJ*_*rJM 5

这次崩溃的原因是片段仍然在执行代码时已经从您的Activity中分离出来了.

在你的情况下,片段到达时已经切换到另一个片段getContext().因为getContext()正在寻找Activity(片段不再附加到它),它将导致nullpointer异常.

请尝试以下方法:

 if(isAdded()){
    tableRow = new TableRow(getContext());
    tableRow.setLayoutParams(new TableLayout.LayoutParams(
    TableLayout.LayoutParams.WRAP_CONTENT,
    TableLayout.LayoutParams.WRAP_CONTENT, 1.0f));
 }
Run Code Online (Sandbox Code Playgroud)