다음과 같은 구조의 애플리케이션을 구축 중입니다.백그라운드에서 죽은 앱을 다시 시작하면 이상하게 작동합니다.
MainActivity -> Fragment1
-> Fragment2 -> Fragment3
여기 Fragment1은 FrameLayout의 MainActivity에서 호스팅됩니다. 사용자가 Fragment1에서 임의의 옵션을 클릭하면 ViewPager에서 Fragment3를 호스트하는 Fragment2로 전환합니다.
문제는 사용자가 앱을 닫지 않고 Android 홈으로 이동하고 Android가 앱을 죽이고 사용자가 최근 앱 목록에서 앱을 다시 시작하려고하면 Fragment3에 빈 화면이 표시된다는 것입니다. 여기
내가public void requestChangeFragment(Fragment newFragment,String tag,Fragment oldFragment, int anim_in, int anim_out){
if(isStopped()){
return;
}
mFragmentManager = getSupportFragmentManager();
android.support.v4.app.FragmentTransaction fragmentTransaction = mFragmentManager.beginTransaction();
fragmentTransaction.setCustomAnimations(anim_in,anim_out,anim_in,anim_out);
fragmentTransaction.add(R.id.main_frame_layout, newFragment, tag);
Log.i("FragMngr","Animations set in "+anim_in+" out "+anim_out);
fragmentTransaction.addToBackStack(tag);
int count = mFragmentManager.getBackStackEntryCount();
String log="";
fragmentTransaction.commit();
for(int i=0;i<count;i++){
android.support.v4.app.FragmentManager.BackStackEntry backStackEntry = mFragmentManager.getBackStackEntryAt(i);
log += "count "+i+" name "+backStackEntry.getName()+"\n";
}
Log.d("FragMngr","BackStack trace after adding is\n "+log);
if(oldFragment!=null) {
if(oldFragment.isResumed()) {
oldFragment.onPause();
}
}
topFragment = newFragment;
}
requestChangeFragment()
가 MainActivity
에서 구현 interface
의 도움으로 조각을 실행라고 조각 트랜잭션을 위해 사용하고있는 방법이다.
코드를 추가로 게시 할 수 있습니까? onResume 및 onPause 메서드와 비슷합니다. – user6547359
기본적으로 로그를 제외한 메소드에는 아무 것도 없습니다. 이러한 조각에서 Crashlytics를 사용하려고 할 때에도 충돌이 발생합니다. (Crashlytics가 초기화되지 않았습니다.) Crashlytics를 초기화하려고하면 컨텍스트를 표시 할 수 없습니다. null 일 수 없습니다. –
아마도 수명주기를 잘 관리하지 못했을 것입니다. 여기에 좋은 튜토리얼을 읽어 보길 원합니다. https://www.raywenderlich.com/117838/introduction-to-android-fragments-tutorial – user6547359