2012-12-02 5 views
0

listFragment A 항목을 선택한 후 조각 B1을 단편 B2로 바꾸고 싶습니다.단편 교체하기

@Override 
public void onListItemClick(ListView l, View v, int position, long id) { 

    Integer Position = position; 
    WebViewerFragment fragment = (WebViewerFragment) getFragmentManager() 
      .findFragmentById(R.id.detailFragment); 
    if (Position.equals(0)) { 
     FragmentManager fm = getFragmentManager(); 
     WebViewerFragment newFragment = new WebViewerFragment(); 
     FragmentTransaction ft = fm.beginTransaction(); 
     ft.replace(R.id.detailFragment, newFragment); 
     ft.addToBackStack("android"); 
     ft.commit(); 
    } else if (Position.equals(1)) { 
     FragmentManager fms = getFragmentManager(); 
     WebViewerFragment_II newFragments = new WebViewerFragment_II(); 
     FragmentTransaction fts = fms.beginTransaction(); 
     fts.replace(R.id.detailFragment, newFragments); 
     fts.addToBackStack("google"); 

     fts.commit(); 
    } 
} 

이것은 한 번만 대체되고 항목 1 (위치 0)을 다시 선택한 후에 응용 프로그램이 충돌합니다.

+0

예외의 스택 추적을 게시하십시오. – yDelouis

답변

0

replace(int, Fragment)FragmentTransaction으로 호출하면 int는 이전에 사용한 Fragment을 넣을 컨테이너의 ID 여야합니다. 일반적으로 FrameLayout입니다.
Fragment을 XML로 바꿀 수 없습니다.

+0

감사합니다. 이제 응용 프로그램은 충돌하지 않지만'addTobackStacK'는 작동하지 않습니다. 'ft.replace'를'ft.add'로 변경하면 역시 작동합니다. 왜? –

+0

나는 그것이 스택이라고 생각하고 뒤쪽을 클릭하면 맨 위에있는 조각을 제거한다. 따라서 replace를 호출하면 조각을 제거하고 아무 것도 남지 않습니다. add를 호출하면 마지막 조각을 제거하고 아래 조각이 나타납니다. – yDelouis