2014-07-26 2 views
1

파괴 된 조각의 onActivityResult가 여전히 호출되는 문제가 있습니다.다시 시작된 조각 대신 파괴 된 조각 onActivityResult가 호출됩니다.

운영 체제가 어떤 이유로 든 활동을 파괴 할 수 있습니다. 즉, 구성 변경뿐 아니라 활동이 백그라운드로 진행되고 메모리가 부족합니다. 내 테스트 케이스에는 카메라 활동을 시작하기위한 활동/단편이 있습니다. 카메라보기가 끝나면 점심 시간 조각이 파괴 될 수 있습니다 (쉬운 방법은 활동을 유지하지 않음을 확인하는 것입니다). 개발자 옵션 설정 (하지만 당신의 OS가 그렇게하기로 결정 어떤 이유로 발생할 수 있습니다 파괴 할 필요가 없습니다).

을 그것은 Android: Activity getting Destroyed after calling Camera Intent

의 문제와 유사하지만 여기에 차이가 조각이다 F1은 카메라 작동을 시작했으며, F1의 onDestroy는 os에 의해 호출되었습니다. 카메라 작동에서 사진을 가져 와서 점심 조각으로 돌아온 후 os가 다시 생성하지만 조각의 새로운 인스턴스 F2입니다.

추적에서 조각 인스턴스 F1의 onActivityResult가 새 사진 데이터와 함께 여전히 호출되지만 조각 인스턴스 F2의 onActivityResult는 호출되지 않음을 보여줍니다.

os에 의해 파괴/재 작성 될 때 일반적인 문제입니까? 열린 활동 (이 경우 카메라와 같은)에서 콜백을 잡아 내고 새로 생성 된 조각 인스턴스에 데이터를 전달하는 방법은 무엇입니까?

감사합니다.

답변

1

문제는 onCreate (Bundle savedInstanceState)에서 액티비티를 다시 만들 때 savedInstanceState가 여분의 새 Fragment 인스턴스를 다시 작성하지 않도록 확인해야한다는 것입니다. os가 Fragment 인스턴스의 재 작성을 수행하도록하십시오. 그런 다음 onActivityResult()가 적절한 Fragment 인스턴스에서 호출됩니다.