2017-05-04 43 views
0

當我恢復到片段時,會發生此異常。這是堆棧跟蹤RuntimeException:由於NPE而無法恢復活動

Non-fatal Exception: java.lang.RuntimeException: Unable to resume activity {com.beco.ibeco/com.beco.ibeco.app.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setColorFilter(int, android.graphics.PorterDuff$Mode)' on a null object reference 
    at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3212) 
    at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3243) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1465) 
    at android.os.Handler.dispatchMessage(Handler.java:102) 
    at android.os.Looper.loop(Looper.java:148) 
    at android.app.ActivityThread.main(ActivityThread.java:5539) 
    at java.lang.reflect.Method.invoke(Method.java) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'void android.graphics.drawable.Drawable.setColorFilter(int, android.graphics.PorterDuff$Mode)' on a null object reference 
     at com.beco.ibeco.app.store.StoreListFragment.onResume(StoreListFragment.java:141) 
     at android.support.v4.app.Fragment.performResume(Fragment.java:2235) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1346) 
     at android.support.v4.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManager.java:1528) 
     at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1595) 
     at android.support.v4.app.FragmentManagerImpl.dispatchResume(FragmentManager.java:2898) 
     at android.support.v4.app.FragmentController.dispatchResume(FragmentController.java:223) 
     at android.support.v4.app.FragmentActivity.onResumeFragments(FragmentActivity.java:509) 
     at android.support.v4.app.FragmentActivity.onPostResume(FragmentActivity.java:498) 
     at android.support.v7.app.AppCompatActivity.onPostResume(AppCompatActivity.java:172) 
     at android.app.Activity.performResume(Activity.java:6389) 
     at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3197) 
     at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3243) 
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1465) 
     at android.os.Handler.dispatchMessage(Handler.java:102) 
     at android.os.Looper.loop(Looper.java:148) 
     at android.app.ActivityThread.main(ActivityThread.java:5539) 
     at java.lang.reflect.Method.invoke(Method.java) 
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) 
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 

這是代碼

@Override 
public void onResume() { 
    super.onResume(); 
    Sample.getApp().setMallId(null); 
    Sample.getApp().setStoreId(null); 
    if(mMenu != null && mMenu.hasVisibleItems() && mMenu.getItem(0) != null) 
      mMenu.getItem(0).getIcon().setColorFilter(getResources().getColor(R.color.sample_black), PorterDuff.Mode.SRC_ATOP); 
} 

而且我沒有找到能這NPE發生。任何人都請幫助我。提前致謝 !

回答

0

編輯
爲了解決這個問題我也不得不檢查是否mMenu.getItem(0).getIcon() != null

@Override 
    public void onPrepareOptionsMenu(Menu menu) { 
     super.onPrepareOptionsMenu(menu); 
     if(mMenu != null && mMenu.hasVisibleItems() && mMenu.getItem(0) != null && mMenu.getItem(0).getIcon() != null) 
      mMenu.getItem(0).getIcon().setColorFilter(ContextCompat.getColor(getContext(),R.color.beco_black), PorterDuff.Mode.SRC_ATOP); 
    } 
相關問題