내비게이션 서랍으로 구성된 MainActivty
이 있습니다. 탐색 서랍 코드는 official documentation에 매우 가깝습니다. 이제 MainActivty
은 시작시 FragmentA
을로드합니다. 탐색 창은 FragmentA
에서만 사용할 수 있습니다. 지금까지 그렇게 좋았습니다. 모두 잘되었습니다.오리엔테이션 변경시 onCreate()가 호출되지 않음
이제 MainActivity
이 인식하는 화면에서 무엇인가를 탭하고 FragmentA
을 FragmentB
으로 바꿉니다. 내가 FragmentB
오전 때, FragmentB.onCreate()
에서 나는 다음과 같은 전화 :
setHasOptionsMenu(true);
((MainActivity)getActivity()).mDrawerToggle.setDrawerIndicatorEnabled(false); //ActionBarDrawerToggle mDrawerToggle is a public class variable in MainActivity
이을 살표 돌아 가기로 액션 바의 서랍 캐럿을 대체하기 위해서입니다. 이것은 잘 작동합니다.
지금이 시점에서 화면 방향을 변경하면 MainActivty.onCreate()
이 호출되지 않습니다. FragmentB.onCreate()
이 여전히 호출되며 MainActivity.onCreate()
이 호출되지 않았으므로 mDrawerToggle
은 null입니다. 따라서 NullPointerException
으로 인해 앱이 다운됩니다.
나는 활동을 위해 android:configChanges="orientation"
을 사용하지 않고있다. Android 문서의 예제 코드에는 하나의 Activity 만 있고 다른 조각은 없으므로이를 해결하는 방법을 모르겠습니다. 어떤 도움을 주셔서 감사합니다.
** 힌트 :'Fragment'가'ActionBar'를 변경하기를 원한다면'FragmentTransaction'을 커밋하기 전에'fragmentToSwitchTo.setHasOptionsMenu (true)'를 호출하고' invalidateOptionsMenu()'. 'onCreateOptionsMenu()'를 오버라이드하는 것은'Activity'처럼'Fragment' 내부에서 작동합니다. – tambykojak
안녕하세요, 어떻게'onCreateOptionsMenu'를 무시하면 도움이 될지 모르겠습니다. 제발 좀 더 자세히 설명해 주실 수 있습니까? – rgamber
그것이 현재의 문제를 해결하는 데 도움이된다고 말하는 것은 아니며, 그렇다면 대답을 게시하지 않을 것입니다. 하지만 ActionBar를 편집하려면'((MainActivity) getAcitivty()) '를 호출해야한다고 생각합니다. 일단 많은 조각이 있으면 위의 방법을 사용하여이를 정리할 수 있습니다. – tambykojak