0

因为我必须为我的应用程序做一个自定义菜单,所以我制作了一个片段,它在我的应用程序底部就像一个操作栏!

但是我与堆栈有一些冲突(按下后退按钮时)。

我应该如何编写以下方法?

public void changerContenu(int frameLayout, Fragment frag, boolean ajouterAuStack)
{
    if(R.id.frameContent != frag.getId()) 
// * if the current displaying
// fragment in the layout is the same as the one that I received in param#2 (frag),   
// then don't do anything.
    {
        ft = fragmentManager.beginTransaction();

        ft.replace(frameLayout, frag);
        if(ajouterAuStack)
            ft.addToBackStack(null);

        ft.commit();
    }
}

我知道我的“如果”现在没有任何意义,试图弄清楚如何达到预期的结果:(现在,当我访问片段一次(并且它被推入堆栈)时,我无法重新访问它使用我的“自制操作栏”中的按钮,直到我按了几次后退按钮来清理堆栈。

如果我在菜单上单击几次相同的按钮,我只想不重复堆栈中的项目...

多谢你们!

4

2 回答 2

0

我想更好地理解这个问题。

您有一个片段,其作用类似于操作栏。如果片段已经在显示,你什么都不想做;否则,你想显示它。在什么情况下你想回去,应该怎么做?

请注意,底部的单个操作栏不适合典型的 Android 设计。用户可能不了解如何使用您的应用程序。我很想知道为什么常规的 ActionBar 不适合你。

于 2013-03-12T00:36:13.437 回答
0

为了将来参考,我让它这样工作:

public void changerContenu(int frameLayout, Fragment frag, boolean ajouterAuStack, String tag)
{
    ft = fragmentManager.beginTransaction();

    ft.replace(frameLayout, frag);
    if(ajouterAuStack && (fragmentManager.getBackStackEntryCount() == 0 
            || fragmentManager.getBackStackEntryAt(fragmentManager.getBackStackEntryCount()-1).getName() != tag))
        ft.addToBackStack(tag);

    ft.commit();
}
于 2013-03-12T16:09:53.727 回答