替换片段的意外行为

Unexpected behaviour replacing fragments

抱歉这么长post,我尽量让它更易读。

我对 JAVA 有一定的了解,并试图理解 Android 编程。今天一直在努力学习碎片知识

我已阅读 this article 并获得了使用 them.I 的基础知识设法制作片段并在需要时替换它们。

我继续学习 this project,并认为尝试使用我为练习目的而构建的基本井字游戏向其中添加片段可能会很有趣。

现在我在替换片段时遇到了问题。一切正常,直到我在混合中添加具有表格布局的 TicTacToe 视图。该片段没有被替换,而是添加了一个额外的片段(或者看起来如此)并使用它来切换片段。

BoardField 只是我做的 class extends Button

不适合我的布局是这样的:

<?xml version="1.0" encoding="utf-8"?>
<TableLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#0f0fdf">
<TableRow
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

    <com.javacodegeeks.android.fragmentstest.BoardField android:id="@+id/my_button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonDefault"
        android:onClick="selected"
        />
    <com.javacodegeeks.android.fragmentstest.BoardField android:id="@+id/my_button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonDefault"/>
    <com.javacodegeeks.android.fragmentstest.BoardField android:id="@+id/my_button3"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/buttonDefault"/>
</TableRow>
</TableLayout>

为了便于阅读,我省略了其他行,它们很相似。

所以我的问题是,为什么在我使用 TableLayout 时替换片段不起作用??

编辑:

Eric 的解决方案有效,我希望了解更多原因?

为什么父视图是TableLayout?尝试将其更改为带有子项的 RelativeLayout,即 TableLayout(仅用于测试目的)

使用 RelativeLayout 作为父视图,您是否可以 "replace" 而不是 "add" 片段?

我想你的错误不在这里。也许您可以查看创建新片段的代码或替换片段的代码。 TableLayout 没有任何意义来替换片段。 Eric 是对的,RelativeLayout 比 TableLayout 更好,但这不是问题所在。你能放更多你的代码吗?