FragmenManager替换使叠加

pio*_*rpo 4 android android-fragments

我正在使用supportlib v4来实现master-detail流程.

问题:"details"片段的新实例覆盖第一个(xml创建)而不是替换它.

我的活动布局是:

<LinearLayout 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"
    android:orientation="horizontal"
    tools:context=".TrackListActivity" >

    <fragment
        android:id="@+id/fragmentList"
        android:name="pl.com.digita.BikeComputerUi.TrackList.TrackListFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="1" />

    <fragment
        android:id="@+id/fragmentTrack"
        android:name="pl.com.digita.BikeComputerUi.TrackList.TrackInfoFragment"
        android:layout_width="0dp"
        android:layout_height="match_parent"
        android:layout_weight="2" />

</LinearLayout>
Run Code Online (Sandbox Code Playgroud)

点击后调用的方法:

private void showDetails(long trackId){
    View fragmentContainer = getActivity().findViewById(R.id.fragmentTrack);
    TrackInfoFragment trackInfoFragment =  TrackInfoFragment.newInstance(trackId);
    FragmentManager fragmentManager =  getFragmentManager();
    fragmentManager.beginTransaction().replace(fragmentContainer.getId(), trackInfoFragment).commit();

    }
Run Code Online (Sandbox Code Playgroud)

Jak*_*ton 7

注意:通过在布局XML文件中定义片段将片段添加到活动布局时,无法在运行时删除片段.如果您计划在用户交互期间将片段交换进出,则必须在活动首次启动时将片段添加到活动中,如下一课所示.

这是http://developer.android.com/training/basics/fragments/creating.html上的最后一件事