2013-03-11 114 views
0

因为我必须为我的应用程序做一个自定义菜单,所以我创建了一个片段,它在我的应用程序底部就像一个操作栏一样起作用!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(); 
    } 
} 

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

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

谢谢你们!

回答

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

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

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

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

+0

我曾用一个动作条,但我的工作,公司希望有一个特别的设计,我不能用一个动作条来代表它。所以我将它设计成一个片段,就像一个“标签菜单”。 我有两个frameLayers,一个用我的菜单(比方说A),另一个用于显示我的内容(B)。 如果我在frameLayer A的菜单片段中点击10次我的按钮之一,它会执行我在第一篇文章中显示的代码的10倍。我不希望这样,因为它会在后台堆栈中添加10x片段,并且我必须点击“返回”10次才能离开这个片段。 希望它有帮助! – Shinnyx 2013-03-12 14:27:30