我的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>
答案 0 :(得分:2)
从xml文件中删除fragment
标记,并以编程方式添加ListFragment
,例如:
@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