2013-09-23 4 views
1

FragmentA에는 ListView이 포함되어 있습니다. 내 FragmentB에는 각 항목의 세부 정보가 들어 있습니다. FragmentA의 onItemClickListener()에서 거래를 시작하려면 어떻게해야합니까? FragmentA의 생성에 조각 내에서 FragmentTransaction을 시작하는 방법

Fragment newFragment = EntryFragment.newInstance(); 
    FragmentTransaction transaction = ((FragmentActivity)context).getSupportFragmentManager().beginTransaction(); 

transaction 
     .replace(containerId, newFragment) 
     .addToBackStack(null) 
     .commit(); 

는 I는 R.id.container containerId에 전달한다. 트랜잭션이 호출되면 "0x0somehexnumber ID에 대한 뷰가 없습니다."

+1

IMHO, FragmentA는 계약 패턴을 통해 호스팅 활동에 대한 메소드를 호출하고 해당 활동이 UI 이벤트에 응답하도록해야합니다. 단편 B를 보여주는 것은 모든 화면 크기 등에서 옳은 대답이 아닐 수 있으며 일반적으로 화면 크기를 무시해야합니다. 그 너머에는 잘못된 값인 containerId를 가지고있는 것으로 보일 것입니다. 에러 메시지는 그 값이 아무것도 없다는 것을 나타냅니다. – CommonsWare

+0

ID가 어떤보기에 속해 있다는 것을 알고 있습니까? gen/com.example.packagename/R.java를보고 뷰 ID를 확인할 수 있습니다. – edisonthk

답변

1

컨테이너 ID를 전달할 필요가 없습니다.

간단히 R.id.your_containerlayout을 사용하십시오.

replace(...) 매개 변수의 경우. 또한,이 줄을 호출하면 충분합니다 :

FragmentTransaction transaction = getFragmentManager().beginTransaction(); 

당신이 지원-조각 내에있는 경우, 이것은 당신에게 SupportFragmentManager을 얻을 것이다.

관련 문제