1

나는 XML 레이아웃의 RelativeLayout에 두 개의 정의 된 Fragment가 있으며, 서로 위에 놓여있는 Fragment를가집니다. 내가하고 싶은 일은 처음부터 숨기려면 onCreateView이고 두 버튼 사이를 전환하는 스위치 버튼이 있습니다. 이것은 OnCreateView의 모습입니다 :조각에 액세스 할 수없는 이유는 무엇입니까? (NullPointerException)

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

ViewGroup rootView = (ViewGroup) inflater.inflate(
      R.layout.fragment_questions_slide_page, container, false); 

FragmentTransaction ft = getChildFragmentManager().beginTransaction(); 
ft.hide(getFragmentManager().findFragmentById(R.id.firstFragment)); 
ft.commit(); 

앱을 실행할 때 다음 오류가 발생합니다. 어떤 아이디어?

java.lang.NullPointerException: Attempt to read from field 'int android.support.v4.app.Fragment.mContainerId' on a null object reference 
                      at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1017) 
                      at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:976) 
                      at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:95) 

차이가 나는 경우, 조각은 ViewPager로 설정된 PagerAdapter에 의해 시작됩니다.

+0

FragmentTransaction ft = getFragmentManager(). beginTransaction(); – chaintrooper

+0

null 값을 사용하여 hide() 또는 show()를 호출합니까? –

답변

0

표시/숨기려는 조각을 찾으려면 getChildFragmentManager을 사용해보십시오.

또한 당신은하지 조각 id

0

@mohax에서 힌트가 좋았다으로, 그들이 컨테이너에 조각을 검색합니다.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 
    ViewGroup rootView = (ViewGroup) inflater.inflate(
      R.layout.fragment_questions_slide_page, container, false); 

    FragmentTransaction transaction = getFragmentManager() 
      .beginTransaction() 
      .hide(getChildFragmentManager().findFragmentById(R.id.firstFragment)) 
    transaction.commit(); 

트랜잭션이 getFragmentManager에 의해 당신이 getChildFragmentManager 전화를해야 조각을 식별하기위한 것입니다 : 여기에 작업 코드입니다. 감사!

관련 문제