我找了很长时间的答案,找不到任何答案。所以我希望你能帮助我。我正在制作一个Android项目,只需点击一下按钮,我就想用另一个自定义片段替换当前的自定义片段(由我制作)。问题是,当我尝试这样做时,并非加载第二个片段中的所有组件,特别是图像按钮。 我正在从我的活动中做到这一切。
这是我替换片段的代码:
public void loadTab() {
String n1 = ((TextView) findViewById(R.id.nj1)).getText().toString();
String n2 = ((TextView) findViewById(R.id.nj2)).getText().toString();
ft = Frag_Tab.newInstance(n1, n2);
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.replace(R.id.jfl, ft);
transaction.addToBackStack(null);
transaction.commit();
}
我明白了:
但如果我直接用transaction.add添加第二帧(不添加第一个片段),它会出现:
private void initTab() {
ft = Frag_Tab.newInstance("j1", "j2");
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.add(R.id.jfl, ft, "tab");
fragmentTransaction.commit();
}
所以我无法弄清楚问题是什么,为什么这个图像按钮会消失? 谢谢你的帮助。
修改
我打开第一个片段时发现了这个错误。那么,也许它与内存问题有关?
Background partial concurrent mark sweep GC freed 670(44KB) AllocSpace objects, 0(0B) LOS objects, 39% free, 11MB/19MB, paused 18.369ms total 51.191ms
编辑2: 对不起,似乎还不清楚我希望你帮我什么。问题在于你可以在第二个图像中看到的骰子图像按钮,当我使用transaction.replace时没有加载该按钮,但是如果我使用transaction.add,则按钮实际上是加载的。
所以,我需要在我的代码中使用replace方法,因为我需要首先显示另一个片段,询问用户有关玩家姓名的内容,然后再显示第二个。我设法加载图像按钮的方式是不加载第一个片段。
片段1 =玩家姓名带有一个按钮来启动片段2,我使用了transaction.replace 问题=当我这样做时,图像按钮(右边的骰子)不会加载到片段2中 片段2 =带有骰子图像按钮的游戏桌 问题=如果我使用transaction.add直接使用此片段启动活动,则会出现骰子图像按钮 最终问题=所以在transaction.replace中必须发生错误,才能加载图像按钮。
好吧,我希望我现在已经足够清楚了。