2016-03-03 56 views
1

我正在使用我的应用程序中的滑动菜单。当用户按下滑动菜单项时,我会将碎片存储在堆栈中。如果我按下fragmentA它将作为第一个元素堆叠,如果我再次打开幻灯片菜单并再次按下fragmentA,它也会作为第二个元素,我想避免这种情况。当我使用android时会出现问题硬件后退按钮,因为两个相同的碎片在堆栈中。如何避免它。Java堆栈:不允许将重复的片段条目复制到堆栈中

public void switchContent(Fragment fragment) { 
    mContent = fragment; 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction ft = fragmentManager.beginTransaction(); 
    ft.add(R.id.content_frame, mContent); 
    FragmentChangeActivity.fragmentStack.lastElement().onPause(); 
    FragmentChangeActivity.fragmentStack.push(mContent); 
    ft.commit(); 

    getSlidingMenu().showContent(); 
} 
+0

如果按片段A则片段B是什么,然后再片段 –

+0

@KhizarHayat然后,它可以在堆栈[ABA],但它不应该让[ AABABB。 AA和BB不应堆叠。 – hari86

回答

3

试试这个:

public void switchContent(Fragment fragment) { 
if(mContent !=null && (fragment.getClass().toString().equals(mContent.getClass().toString()))){ 
return; 
} 
    mContent = fragment; 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction ft = fragmentManager.beginTransaction(); 
    ft.add(R.id.content_frame, mContent); 
    FragmentChangeActivity.fragmentStack.lastElement().onPause(); 
    FragmentChangeActivity.fragmentStack.push(mContent); 
    ft.commit(); 

    getSlidingMenu().showContent(); 
} 
+0

@谢谢你的工作。并且为了再次滑动,我放置了getSlidingMenu()。showContent();在if语句中。 – hari86

+0

欢迎。接受和投票我的答案谢谢 –

+0

。嘿,有没有可能我们可以重用片段,如果它已经在堆栈中?像[A,B,C,现在点击A应该重用第一个A元素] – hari86