부모 응용 프로그램의 onCreate() 호출 후 화면을 회전 할 때 잘 작동하는 유지 된 조각이 있습니다.응용 프로그램으로 돌아갈 때 보존 된 조각이 올바르게 작동하지 않습니다.
그러나 응용 프로그램을 종료하고 돌아 오는 순간 (예 : 홈 화면으로 이동 한 다음 내 응용 프로그램으로 돌아가는 등) 조각이 제대로 작동하지 않는 것 같습니다.
본질적으로 어떤 일이 일어나고 있는지는 내 활동으로 돌아올 때마다 조각이 어떤 식 으로든 '재설정'된 것처럼 보입니다. 이것은 조각 트랜잭션과 관련이 있습니까? Log.d 마지막 호출에
()는 gameFragment.testValue가 null을 반환 - 방법이 발생합니까? 값을 설정하는 유일한 장소는 이전 조건 블록입니다. 그 값을 설정하지 않고 어떻게 조각을 만들 것입니까? Log.d 마지막 호출에
gameFragment = (GameFragment)fragmentManager.findFragmentByTag("gameFragment");
if (gameFragment == null)
{
gameFragment = new GameFragment();
gameFragment.setRetainInstance(true);
gameFragment.testValue = new Random().nextInt(1000);
Log.d("hmm", " after set test value:" +gameFragment.testValue);
fragmentManager.beginTransaction().add(gameFragment, "gameFragment").commit();
fragmentManager.executePendingTransactions();
gameFragment.testValue = new Random().nextInt(1000);
Log.d("hmm", " after commit, after set test value:" +gameFragment.testValue);
}
else
{
Log.d("hmm", "test value:" +gameFragment.testValue);
}
은 아마 당신의 조각이 장면 뒤에 다시 가져옵니다
뭔가 논문을 지원합니다. 앱을 통해 디버깅하고 GameFragment 생성자에 브레이크 포인트 설정을 시도하여 확인을 위해 생성자 내에 디버그 정보 로그를 넣거나 확인하십시오. EDIT : Fragment.instantate를 통해 조각을 만들 때 기본 생성자가 사용됩니다. –
나는 그것이 재현되는 것에 동의 할 것이다. 하지만 어떻게 될까요? 지금 디버깅을 시도하겠습니다. –
앱이 파괴되었을 수 있습니다. 조각이 실제로 유지되었는지 확인할 수 있습니까? – uDevel