0

我有雙窗格和單窗格之間切換取決於取向與列表片段的活性和詳細視圖片段的Android片段雙窗格定向誤差二進制XML文件行#7:錯誤充氣類片段

即 肖像:單窗格=列出片段/細節片段(當物品已經被選中)

景觀:雙窗格=列出片段和詳細信息片段

我收到上述錯誤以下用例:

在項目
  1. 在肖像單一窗口列表中單擊展開細節片段
  2. 旋轉屏幕爲橫向
  3. 例外!

我看不出發生了什麼問題..好像有幾個人有類似的問題,但不知道它是否是相同的。

下面是一些代碼:

默認activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <fragment 
     class="com.example.MyListFragment" 
     android:id="@+id/myListFragment" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" /> 
</FrameLayout> 

景觀activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <fragment 
     class="com.example.MyListFragment" 
     android:id="@+id/myListFragment" 
     android:layout_weight="1" 
     android:layout_width="0px" 
     android:layout_height="match_parent"/> 

    <FrameLayout android:id="@+id/myDetailsLayout" 
     android:layout_weight="1" 
     android:layout_width="0px" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

在MainActivity.Java:

.... 
@Override 
public void onMyItemSelected(DetailsItem item) {  

    Fragment newDetailFragment = new MyDetailFragment(); 
    Bundle bundle = new Bundle(); 
    bundle.putParcelable("details", item); 
    newDetailFragment.setArguments(bundle); 

    FragmentManager fragmentManager = getSupportFragmentManager(); 
    FragmentTransaction ft = fragmentManager.beginTransaction(); 

    if (dualPane){ 
     ft.replace(R.id.myDetailsLayout, newDetailFragment); 
    } 
    else { 
     ft.replace(R.id.myListFragment, newDetailFragment); 
    } 
    ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN) 
    .addToBackStack(null) 
    .commit(); 
} 
... 

回答

0

我無法找到確切問題的解決方案。但是我正在閱讀的地方將在佈局xml中定義的碎片與在運行時動態加載的碎片混合在一起會導致很多問題。

因此,爲了解決這個問題,我改變了我的佈局,使它只包含了框架佈局佔位符(即沒有片段)。然後,我在運行時動態地用真實片段替換佔位符。

我現在的佈局看起來是這樣的:

默認activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<FrameLayout 
    android:id="@+id/myListFragment" 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
</FrameLayout> 

景觀activity_main.xml中:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal" > 

    <FrameLayout 
     android:id="@+id/myListFragment" 
     android:layout_weight="1" 
     android:layout_width="0px" 
     android:layout_height="match_parent"/> 

    <FrameLayout android:id="@+id/myDetailsLayout" 
     android:layout_weight="1" 
     android:layout_width="0px" 
     android:layout_height="match_parent" /> 
</LinearLayout> 

現在我有2個功能在我的OnCreate()函數中調用。一個將列表片段添加到列表佔位符,另一個將詳細信息片段添加到詳細信息佔位符(如果是雙窗格)。

相關問題