0

나는 목록 조각과 방향에 따라 듀얼 창 및 단일 창 사이를 전환 활동을하고 세부 조각을안드로이드 조각 듀얼 창 방향 오류 바이너리 XML 파일 라인 # 7 : 오류 팽창 클래스 단편

예를 볼 수 세로 : 단일 창 = 목록 조각/(항목이 선택되었습니다) 세부 조각

풍경 : 듀얼 창 = 목록 조각 및 상세 단편

나는 다음과 같은 사용 사례에 대해 위의 오류가 점점 오전 :

항목 세로 6,
  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 : 여기

몇 가지 코드 MainActivity.Java에서

<?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> 

:

.... 
@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> 

을 그리고 지금은이 개 기능을 가지고 OnCreate()에 대한 내 활동에서. 하나는 목록 조각을 목록 자리 표시 자에 추가하고 다른 하나는 세부 사항 조각을 세부 사항 자리 표시 자에 추가합니다 (이중 패널 인 경우).

관련 문제