是。我知道有很多像我一样的问题,但是我看过它们(我猜)
我认为我做的一切都是正确的,但它仍然不起作用 我有一个frameLayout。我试图使用add()而不是replace(),但这不起作用。
我尝试在OnLoadFinished() - 方法中添加一个片段。
我的代码:
Bundle fragBundle = new Bundle();
fragmentManager = getFragmentManager();
fragmentTransaction = fragmentManager.beginTransaction();
ContactInfoFragment contactInfoFragment = (ContactInfoFragment) fragmentManager.findFragmentByTag("contactInfo");
if (contactInfoFragment == null){
switch(type) {
case "44": {
//passing some data to bundle
break;
}
case "223":{
//passing some data to bundle
break;
}
}
contactInfoFragment = new ContactInfoFragment();
contactInfoFragment.setArguments(fragBundle);
fragmentTransaction.replace(R.id.contact_layout, contactInfoFragment, "contactInfo");
fragmentTransaction.addToBackStack(null);
fragmentTransaction.commit();
fragmentManager.executePendingTransactions();
}
请帮帮我
我的布局:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:background="#ffffff"
tools:context="com.example.tenderplan.activities.ElementActivity">
<ScrollView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/scrollView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent" android:paddingLeft="0dp"
android:paddingRight="0dp"
android:paddingTop="0dp"
android:paddingBottom="0dp"
android:background="#ffffff"
tools:context="com.example.tenderplan.activities.ElementActivity"
android:id="@+id/element_layout"
android:orientation="vertical">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/contact_layout">
</FrameLayout>
<fragment
android:name="com.example.tenderplan.fragments.DocumentsFragment"
android:id="@+id/documents_fragment"
android:layout_height="wrap_content"
android:layout_width="match_parent"
tools:layout="@layout/documents_fragment"
android:layout_below="@+id/contact_info_fragment"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_marginLeft="16dp"
android:layout_marginRight="16dp"
android:layout_marginBottom="16dp" />
<LinearLayout
android:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/attachmentslayout2"
android:layout_alignParentLeft="true"
android:layout_alignParentStart="true"
android:layout_below="@+id/documents_fragment">
</LinearLayout>
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id = "@+id/comments_layout">
</FrameLayout>
</LinearLayout>
</ScrollView>
实际上,我需要更换contact_layout。
答案 0 :(得分:1)
你不应该在onLoadFinish中提交片段事务,你可以阅读:
在先前创建的加载程序完成其加载时调用。请注意,通常,在此调用中,不允许应用程序提交片段事务,因为它可能在保存活动状态后发生。有关此内容的进一步讨论,请参阅FragmentManager.openTransaction()。
http://developer.android.com/reference/android/app/FragmentManager.html#beginTransaction()
所以你应该做的是使用commitAllowingStateLoss()而不是commit()。