2014-01-28 4 views
1

I 처음에 요소의 목록을 가진 단편을 도시이 활성을 갖는다. 이것은이 코드를 완벽하게 작동합니다 : 변경 내부 단편()

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.list_act); 

    if(null == savedInstanceState) 
    { 
     FragmentManager fragmentManager = getFragmentManager(); 
     FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction(); 
     ListFragment glfragment = new ListFragment(); 
     fragmentTransaction.add(R.id.listfrag1, glfragment); 
     fragmentTransaction.commit(); 
    } 

} 

가 잘 나는 ListFragmentDetailFragment 있습니다. 그러나 목록의 요소를 클릭 할 때 전환을 수행하는 방법을 알지 못합니다. 나는 fragmentTransaction.replace()을 알고 있지만, 나는 그것을 언제 부를지 모른다. 또한 나는 DetailFragment에에 "수출"일부 데이터를 원하는 ...

나는 내가 ListFragment 내부 OnListItemClick()을 사용한다고 생각하지만, 나는 FragmentManager 조각 내부와하지의 주요 활동에 사용하는 방법을 모른다 마치 그것이 의도였던 것처럼,하지만 그렇지 않습니다.

답변

2

조각 내에서 조각 관리자를 사용하려면 getFragmentManager() 대신 getActivity().getFragmentManager()을 호출하기 만하면됩니다. OnItemClickListener에서 구현하면 충분합니다.

+0

나는이 @Override을 시도 \t 공공 무효 onListItemClick (ListView에 리터,보기 V, INT 위치, 긴 ID) \t { \t \t FragmentManager FM = getActivity() getFragmentManager().; \t \t하여 FragmentTransaction 피트 fm.beginTransaction =(); \t \t DetailFragment DF = 새로운 DetailFragment(); \t \t ft.replace (R.id.listfrag1, DF); \t \t ft.commit(); \t}하지만이 작동하지 않았다 ... – fcasanova

+0

확인을 내 문제는 내 DetailFragment이 ... 나를 위해 마른 세수 ListFragment이었다이었다. 그것은 효과가있다! – fcasanova

1

내가 뭘 할 것은 :

  • 이 활동의 ​​onAttach에서
  • 를이 인터페이스를 구현하자 인수로 하나의 방법 listItemSelected() 선택한 항목
  • 의 ID를 인터페이스를 정의하여 프래그먼트를 나열하고, 활동을 가져 와서 구성원 변수로 유지하고, 인터페이스 유형으로 변환하십시오. onDetach에서 참조를 취소했는지 확인하십시오. 당신의 onListItemClick에서
  • , 활동에서 활동
  • 에이 메소드를 호출, 당신은 이제 새로운하여 FragmentTransaction을 수행 할 수 있습니다, 이번에는 올바른으로 세부 조각을 만들려면 대체 대신 조각
  • 를 추가해야 인수 (id)를 사용하는 경우 here에 설명 된 방법을 사용하십시오.

이 정상적으로 잘 작동합니다.

+0

감사합니다. 나는 이것을 시도 할 것이다. – fcasanova