Java堆栈:不允许将重复的片段条目放入堆栈

时间:2016-03-03 12:16:48

标签: java android android-fragments stack

我在我的应用程序中使用滑动菜单。当用户按下幻灯片菜单项时,我将片段存储在堆栈中。如果我按下fragmentA,它将作为第一个元素堆叠,如果我打开幻灯片菜单并再次按下fragmentA它也将作为第二个元素,我想避免这种情况。当我使用android时,这会产生问题硬件后退按钮,因为堆栈中有两个相同的片段。如何避免它。

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();
}

1 个答案:

答案 0 :(得分: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();
}