由于我必须为我的应用程序执行自定义菜单,因此我创建了一个片段,其作用类似于应用程序底部的操作栏!
但是我和堆栈有一些冲突(当按下后退按钮时)。
我应该如何编程以下方法?
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”现在没有任何意义,试图弄清楚如何达到预期的结果:(现在,当我访问片段一次(并且它被推入堆栈)我不能在我的“自制动作栏”中使用我的按钮重新访问它,直到我按下后退按钮几次以清理堆栈。
如果我点击菜单上的相同按钮几次,我只想不复制堆栈中的项目...
谢谢你们!
答案 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();
}