2017-06-13 104 views
0

我的android應用程序出現異常。它看起來像按下了後退按鈕,我們想要彈出後退堆棧(我認爲這是堆棧跟蹤告訴我的)非法狀態異常被拋出。Android IllegalStateException已添加片段

AppVersion: 5.0.3 
DeviceType: phone 
DeviceDetails: SM-J510FN 
SystemVersion: 6.0.1 
Details: Fragment already added: CategoriesFragmentMobileImpl 
{a6aafc9 #0 id=0x7f1200e0 boom.android.new_app.NewCategories.CategoriesFragment} 
StackTrace: 

java.lang.IllegalStateException: Fragment already added: CategoriesFragmentMobileImpl{a6aafc9 #0 id=0x7f1200e0 boom.android.new_app.NewCategories.CategoriesFragment} 
at android.support.v4.app.FragmentManagerImpl.addFragment(FragmentManager.java:1679) 
at android.support.v4.app.BackStackRecord.executePopOps(BackStackRecord.java:777) 
at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2353) 
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146) 
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2098) 
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2008) 
at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:710) 
at android.os.Handler.handleCallback(Handler.java:739) 
at android.os.Handler.dispatchMessage(Handler.java:95) 
at android.os.Looper.loop(Looper.java:158) 
at android.app.ActivityThread.main(ActivityThread.java:7231) 
at java.lang.reflect.Method.invoke(Native Method) 
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 
– 

我使用的支持庫

compile 'com.android.support:appcompat-v7:25.1.1' 

這裏是我的代碼唯一的地方,添加該片段:

@Override 
    protected void bindViews() { 

     Fragment fragment = getSupportFragmentManager().findFragmentByTag(CategoriesFragment.TAG); 
     if(fragment == null) 
      fragment = CategoriesFragmentMobileImpl.newInstance(this); 

     if(fragment.isAdded() == false) { 
      getSupportFragmentManager().beginTransaction(). 
        replace(R.id.main_fragment_container, fragment, CategoriesFragment.TAG) 
        .commit(); 
     } 

     horizontalScrollView = (HorizontalScrollView)findViewById(R.id.breadcrumbs_ScrollView); 
     breadcrumbsContainer = (LinearLayout) findViewById(R.id.breadcrumbs_container); 
     second_toolbar = findViewById(R.id.second_toolbar); 
     bindNavigationMenu(R.id.drawer_layout, navigationView, null); 

    } 

我一直在尋找一些錯誤的在Android和可能這個問題可能有關: https://issuetracker.google.com/issues/36928785

這裏是onBackPressed

@Override 
public void onBackPressed() { 

    if(breadcrumbsContainer.getChildCount() > 0) 
    { 
    removeBreadCrumb(-1); 
} 
if(getSupportFragmentManager().getBackStackEntryCount() > 0) 
{   
    getSupportFragmentManager().popBackStack(); 
} 
else 
{ 
    super.onBackPressed(); 
} 

}代碼

任何想法如何複製這一問題,甚至發生了什麼事情與堆棧跟蹤,所以我可以有一個更好的瞭解?

+0

粘貼你的onbackpressed代碼 – Darish

+0

你在哪裏彈出片段? – Darish

+0

增加了onBackPressed()方法 – Killesk

回答

0

嘗試使用replaceFragment()代替addFragment()!

相關問題