framelayout如何获取内容?

时间:2013-03-11 21:07:35

标签: android android-framelayout

由于我必须为我的应用程序执行自定义菜单,因此我创建了一个片段,其作用类似于应用程序底部的操作栏!

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

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

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

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

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

谢谢你们!

2 个答案:

答案 0 :(得分:0)

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

你有一个片段就像一个动作栏。如果片段已经显示,你不想做任何事情;否则,你想要显示它。在什么情况下你想回去,会发生什么?

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

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