【问题标题】:Android fragments overlapAndroid片段重叠
【发布时间】:2014-03-05 12:04:54
【问题描述】:

我有一个包含两个片段的活动,一个显示列表,一个显示单击项目的详细信息。启动应用程序时,详细信息部分是静态的,一旦我单击一个项目,它就会被替换。问题是旧片段没有被替换,所以两个视图都在彼此之上。

我的活动布局是:

<?xml version="1.0" encoding="utf-8"?>

<fragment
    android:id="@+id/listFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="1"
    class="com.fragments.FragmentOrderList" >
</fragment>

<fragment
    android:id="@+id/detailFragment"
    android:layout_width="0dp"
    android:layout_height="match_parent"
    android:layout_weight="2"
    class="com.fragments.FragmentOrderDetails" >

</fragment>

细节片段的布局是:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent" >


<TextView
    android:id="@+id/tvOrderDetail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="test view of details fragment" >
</TextView>

在上面的布局中,我们也看到了最初看到的静态文本。我活动中替换片段的代码是这样的

        FragmentTransaction transaction = getFragmentManager().beginTransaction();
    FragmentOrderDetails newFragment = new FragmentOrderDetails();
    newFragment.setArguments(b);
    transaction.replace(R.id.detailFragment, newFragment);

    transaction.addToBackStack(null);
    transaction.commit();

对我来说,它看起来不是“替换”而是“添加”。我是否必须始终删除旧片段?还是我必须在这里采用不同的方法?在我看来,只有原始片段保留在那里,并且在第二个,第三个,......替换前一个片段被正确替换,只有静态片段始终保留在那里。

【问题讨论】:

    标签: android android-fragments fragment fragmenttransaction


    【解决方案1】:

    而不是在布局中使用xml fragment:

    <fragment
        android:id="@+id/detailFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2"
        class="com.fragments.FragmentOrderDetails" >
    
    </fragment>
    

    使用一些容器,如 LinearLayoutFrameLayout 和一些 containerId。 然后以编程方式首先使用 containerId 将片段添加到该容器,然后将该容器的内容也替换为 containerId。

    【讨论】:

    • 我花了很长时间才弄清楚这一点。你终于给我答案了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-18
    • 1970-01-01
    • 1970-01-01
    • 2020-03-23
    • 2012-03-11
    相关资源
    最近更新 更多