FragmentTransaction .replace不会加载所有片段组件

时间:2015-06-21 22:27:58

标签: android android-fragments replace fragmenttransaction fragmentmanager

我找了很长时间的答案,找不到任何答案。所以我希望你能帮助我。我正在制作一个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();
}

我明白了:

http://i.stack.imgur.com/pGWNM.jpg

但如果我直接用transaction.add添加第二帧(不添加第一个片段),它会出现:

http://i.stack.imgur.com/rifC3.jpg

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中必须发生错误,才能加载图像按钮。

好吧,我希望我现在已经足够清楚了。

0 个答案:

没有答案