我有2个片段,一个用于游戏,一个用于分数。 当我从游戏片段移动到得分片段时它效果很好,但是当我试图回到游戏时,它会在同一个容器上绘制两个片段(即使使用移除功能)。
public void nextLvl(Fragment current, Fragment next, String score, String nextTag, int LvlTime){
Bundle args = new Bundle();
args.putString("scoreKey", score);
args.putInt("levelTime", LvlTime);
next.setArguments(args);
FragmentManager fm = getFragmentManager();
if (fm != null){
FragmentTransaction ft = fm.beginTransaction();
ft.remove(current);
ft.add(R.id.fragment_place, next, nextTag);
ft.commit();
Log.d("FM","MOVED TO "+next.toString());
}else{
Log.d("FM","fm is null");
}
}
这是我用来在片段之间移动的代码。
这是一张图片,用于展示我在"彼此之间绘制的意思":
http://i.imgur.com/Ylw8iPV.png
1 =游戏片段。
2 =得分片段。
3 =从Score片段移动到Game片段的结果。
答案 0 :(得分:1)
使用替换片段而不是添加
示例:
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.fragment_place, next, nextTag);
ft.commit();
答案 1 :(得分:0)
尝试使用ft.replace
代替remove()
和add()
示例:
ft.beginTransaction()
.replace(R.id.container, fragment)
.commit();