2017-12-12 3 views
0

Google지도 (SupportMapFragment)가 포함 된 대시 보드가 있고 일부 센서가 연결된 센서에 의해 자동으로 업데이트되는 앱이 있습니다. 바이커 라이드를 기록합니다. 이 조각을 호출하자.백 스택에서 조각보기를 계속 실행하십시오.

나는 예를 들어 설정과 관련된 몇 가지 단편, 이전 놀이기구가있는 목록을 가지고있다. 조각 B, C, D라고 부를 수 있습니다.

탐색 뷰의 항목을 누르면 조각이 변경되어 조각이 DrawerLayout (NavigationView 포함) 안에있는 FrameLayout 내부에 배치됩니다. 이는 조각 A로 돌아갈 때만 깨끗한지도 (현재 기록 된 타기의 추적 선을 포함하지 않음)와 빈 센서로 새보기가 만들어지는 경우에만 작동합니다.

단편 A는 항상 drawerLayout 활동 작성시 작성됩니다. onBackPressed 또는 대시 보드 항목을 메뉴에서 누르면 조각이 뒷받침에서 튀어 나오고 A 만 남아 있습니다. 조각 B/C/D가이 위에 생성됩니다.

내 질문은 다음과 같습니다. 다른 조각을 방문하는 동안 맵의 선이 계속 그려 지도록 Fragment A의보기를 메모리에/활성 상태로 유지하려면 어떻게해야합니까? 그리고 파편 A로 돌아 왔을 때 그들은 여전히 ​​거기에 있습니까?

대시 보드에서 별도의 작업을 수행하고 매니페스트에서 android:launchMode="singleInstance" 수정자를 사용하면 동일한 결과를 얻었습니다. 내가 시도한 것 중 하나는 조각 A 안에 setRetainInstance(true)을 넣는 것입니다.

미리 감사드립니다.

답변

0

이것은 일반적인 Android 수명주기 문제입니다. 조각을 다른 것으로 교체하면 조각을 제어 할 수 없으며 Android는 배경에서이를 파기합니다.

Fragment # onSaveInstanceState (Bundle)을 구현하여 조각 상태를 저장해야하며 Fragment가 다시 생성 될 때 상태를 복원하는 방법 중 하나가 필요합니다. onCreate (Bundle), onCreateView (LayoutInflater, ViewGroup, Bundle), onActivityCreated (Bundle) 또는 onRestoreInstanceState (Bundle) 중 하나 일 수 있습니다. 이것은 열심히하는 것처럼 보이지만 안드로이드에 대한 표준적인 실행이며, 전체 활동이 찢어지고 처음부터 다시 시작되는 구성 변경을 위해 구현해야 할 것이 있습니다. Once for all, how to correctly save instance state of Fragments in back stack?

:/저장 여기에 조각 상태를 복원하는 방법에 대한 개요가있다

관련 문제