2012-02-11 4 views
3

그래서 호환성 라이브러리를 사용하기 위해 기존 Android 장치에서 실행하려는 프로젝트에서 작업하고 있습니다. NewsReader와 비슷한 인터페이스를 사용하고 있는데, Activity에있는 두 조각 대신 ViewPagger에 포함 된 다른 Fragment에 포함되어 있습니다. 우리는 이러한 용어를 사용 편의를 위해 호환성을 사용하는 동안 작업에서 FragmentTransaction을 가져 오는 데 문제가 발생했습니다.

... ContainerFragment에서

Activity -> ViewPager -> ContainerFragment->Fragment1 
              ->Fragment2 

이 전화의 경우 내가 조각 2 조각 1을 대체하기 위해 노력하고 있어요 그래서 나는 ContainerFragment에 다음 코드를 시도 ...

import android.support.v4.app.FragmentTransaction;  
... 
public void onBarSelected(Integer index) { 
    selectedBarIndex = index; 
    if (isDualPane) { 
     // display it on the article fragment 
     mBarEditFragment.displayBar(index); 
    } 
    else { 
     // use separate activity 
     FragmentActivity activity = (FragmentActivity)getActivity(); 
     FragmentTransaction ft = activity.getFragmentManager().beginTransaction(); 
     ft.replace(R.id.bar_container, new BarEditFragment(),R.id.bar_edit); 
    } 

} 

하지만

Type mismatch: cannot convert from android.app.FragmentTransaction 
to android.support.v4.app.FragmentTransaction 

내가 거라고 다음과 같은 컴파일 오류를 얻을 ouble가 체크되고 액티비티가 FragmentActivity와의 호환성을 확장시킨다.

UPDATE

가 변경 시도 ...

하고 있어요 ....

MainActivity activity = (MainActivity)getActivity(); 
Object test = activity.getFragmentManager().beginTransaction(); 
FragmentTransaction ft = (FragmentTransaction)test; 
ft.replace(R.id.bar_container, new BarEditFragment()); 

그리고 내가 가진 ...

java.lang.ClassCastException: android.app.BackStackRecord cannot be cast to android.support.v4.app.FragmentTransaction 

어떤 아이디어가?

답변 : 나는 내 문제를 파악

문제는 당신이 활동에서 조각 관리자를받지해야하며 대신 단편에서 그것을 얻을해야합니다. 같은 문제에 직면

이 작동 ....

public void onBarSelected(Integer index) { 
    selectedBarIndex = index; 
    if (isDualPane) { 
     // display it on the article fragment 
     //mBarEditFragment.displayBar(index); 
    } 
    else { 
     FragmentTransaction ft = getFragmentManager().beginTransaction(); 
     ft.replace(R.id.bar_container, new BarEditFragment()); 
     ft.commit(); 
    } 

} 
+1

당신은 또한 당신이 지원을 가져 확인해 봤어 라이브러리는 ContainerFragment에 있습니까? 또한 ft.replace() 후에 ft.commit()을 호출해야합니다. –

+0

즉, "import android.support.v4.app.FragmentTransaction"이 아니라 "android.app.FragmentTransaction 가져 오기". –

+0

예 저는 import ... android.support.v4.app.FragmentTransaction; – Jackie

답변

12

에서 getSupportFragmentManager()

감사를 사용하여 해결했다

+0

더 자세히 설명해 주시겠습니까? 동일한 문제에 직면 해 있습니다. – VenushkaT