2

조각을 사용하여 조각 활동과 통신했습니다.이 조각 활동은 다음과 같이 조각의 클릭 이벤트를 처리하기 위해 해당 참조를 전달합니다. 내가 검색하는 동안이 응용 프로그램을 통해 완벽하게 잘 작동잘못된 불량 예외

class ClickHandler implements ItemClickListener, Parcelable 
{ 
} 

Bundle tempBundle = new Bundle(); 
tempBundle.putParcelable("Interface", (Parcelable) new ClickHandler()); 

는 문제는 내가 (홈 키를 눌러) 응용 프로그램을 종료 할 때 몇 분 때 후 발생 나는 최근에 사용 된 응용 프로그램에서 응용 프로그램으로 돌아갑니다 (응용 프로그램으로 다시 돌아 오면 예외가 발생하지 않음).

은 어느 누구도 이러한 문제

답변

0

나는이 문제를 가지고 있었고, 오류가 발생하는 위치가 파악하는 나에게 시간을 꽤 많이했다 직면했다 않습니다. 내가 한 것은이 question의 대답에 대한 조언을 따르는 것입니다.

내가 수행 한 첫 번째 단계는 응용 프로그램이 충돌이 발생한 클래스와 관련된 savedInstanceState에서 데이터를 복구하는 인스턴스를 찾는 것입니다. 필자가 제공 한 링크에서 권장하는대로 savedInstanceState 번들의 클래스 로더를 설정하기 만하면됩니다. 그것은 처음으로 작동하지 않았다. 크래시는 계속 발생하지만 오류 로그 스택 추적이 변경되어 코드의 아무 행도 지적되지 않습니다. 그리고 난 내 맞춤 parcelable 개체에서 가능한 null 값을 찾고 null이 아닌 값으로 설정합니다. 이것은 특히 코드의 일부 위치에서 null을 확인하는 경우에 발생하는 고통입니다. 외관상으로 안드로이드는 parcelables에서 null 값을 좋아하지 않으므로 치아를 꼭꼭 꿰고해야합니다.

두 가지를 수행 한 후에도 여전히 작동하지 않습니다. 그래서 더 자세히 보았고 실제로 어댑터의 번들에서 인스턴스를 복원하고있는 것으로 나타났습니다. 예를 들어 FragmentStatePagerAdapter과 같은 일부 어댑터가 있습니다. 간단히 그 번들의 ​​클래스 로더를 설정하고 나면 해결할 수 있습니다.