替换片段的意外行为

时间:2015-01-20 15:20:36

标签: android android-fragments

对于长篇文章感到抱歉,我试图尽可能让它变得可读。

我对JAVA有很好的了解并试图了解Android编程。今天我一直在研究片段的知识。

我已阅读this article并了解了与他们合作的基础知识。我设法制作片段并在需要时替换它们。

我继续采用this project,并认为尝试使用我为实践目的而构建的基本tictactoe游戏添加片段可能会很有趣。

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

BoardField只是我制作的一个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的解决方案有效,我希望能找到更多有关原因的信息?

2 个答案:

答案 0 :(得分:1)

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

使用RelativeLayout作为父视图,您是否能够“替换”而不是“添加”片段?

答案 1 :(得分:0)

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