마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

fragment 실행시 에러좀 봐주세요,,

0 추천
private CheckListRightFragment  pcRightFragment ;
private boolean mLoadFlag = false; 
.....

private void loadFragment() {
  
 FragmentManager fragmentManager = getSupportFragmentManager();
 FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
  
 if(mLoadFlag){
  
  CheckListRightFragment r_fragment = new CheckListRightFragment();
  CheckListTextFragment t_fragment = new CheckListTextFragment();
   
  fragmentTransaction.remove(t_fragment);
  fragmentTransaction.replace(R.id.fl_right_layout, r_fragment);
  fragmentTransaction.commitAllowingStateLoss();
   
  pcRightFragment = (CheckListRightFragment)getSupportFragmentManager().findFragmentById(R.id.fl_right_layout);  /////////// *****
   
   Log.v("aaa", "pcRightFragment ## : "+pcRightFragment);
        
 } else {
   
  CheckListTextFragment t_fragment = new CheckListTextFragment();
  fragmentTransaction.replace(R.id.fl_right_layout, t_fragment);  fragmentTransaction.commitAllowingStateLoss();
  
  
  }
 }

......

보시면 mLoadFlag 값에 따라 처음엔 CheckListTextFragment 가 화면에 보여지고 mLoadFlag가 true 로 변경되면 CheckListTextFragment 대신CheckListRightFragment 로 대체됩니다.

1. fl_right_layout 라는 레이아웃에 CheckListTextFragment

2.  fl_right_layout 라는 레이아웃에 CheckListRightFragment

헌데 두번쨰 CheckListRightFragment 로 변경하고 위에 주석친 ////////****  부분처럼 Fragment 를 얻어오려니 계속 에러가 납니다.

저런식으로 얻어올수가 없는건가요? 다른부분에선 썼었는데 ㅠㅠ

에러내용은 java.lang.ClassCastException: com.test.CheckListTextFragment cannot be cast to com.test.CheckListRightFragment 라고 나옵니다.

Fragment 는 해도해도 계속 미궁에 빠지네요 ㅠㅠ 조언부탁드립니다.
 

 

익명사용자 님이 2013년 10월 15일 질문

1개의 답변

0 추천

에러 자체는 클래스 케스트 실패 에러입니다. 즉 얻어온 프래그먼트가 CheckListRightFragment 가 아니라 CheckListTextFragment라서 그런겁니다.

원인은 commit 이라는 메소드의 특성 때문에 그런것으로 보이네요. 해당 메소드는 즉시 실행되는 메쏘드가 아닙니다.

http://developer.android.com/intl/ko/reference/android/app/FragmentTransaction.html#commit() 참조

즉 findFragmentById 메쏘드로 프래그먼트를 얻어왔을때 아직 commit이 수행되지 않은 상태여서 이전의 프래그먼트인 CheckListTextFragment 가 얻어진것으로 보입니다.

whitesnow (8,920 포인트) 님이 2013년 10월 16일 답변
...