2016-03-03 58 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