Android 替换片段

Android replace Fragment

我的 MainActivity 包含 2 个片段。上面的包含一张地图,应该一直可见。下方的最初应该显示一个 ListView,在 FAB 上单击它应该更改为一个 Fragment,可以在其中添加一个新条目。

我尝试在单击按钮时 运行 在我的 MainActivity 中使用以下代码:

    AddFragment newFragment = new AddFragment();
    FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
    transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
    transaction.replace(R.id.fragment_container, newFragment);
    transaction.addToBackStack(null);
    transaction.commit();
    getSupportFragmentManager().executePendingTransactions();

但什么也没有发生。

这是我的 XML:

    <fragment xmlns:android="http://schemas.android.com/apk/res/android"
        android:id="@+id/map"
        class="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="2" />


    <LinearLayout
        android:id="@+id/fragment_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1">

        <fragment
            android:id="@+id/frag_list"
            android:name="com.example.imissit.ListFragment"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>
</LinearLayout>

从 xml 文件中删除 fragment 标签,并以编程方式添加 ListFragment,f.e.:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(…);
    if ( null == savedInstanceState ) {
        getSupportFragmentManager().beginTransaction()
                .replace(CONTAINER_ID, FRAGMENT_INSTANCE, TAG) // Change the values
                .commit();
    }
}

同时将 LinearLayout 更改为 FrameLayout