2017-05-16 11 views
0

Bottom Navigation으로 작업 할 때 Activities 대신 Fragments을 사용하는 것이 좋습니다. 을 나는 각 탭은 Activity입니다 enter image description hereAndroid 하단 탐색 - 활성 상태 유지

표시 같은 Bottom Navigation 줄을 사용하고 있습니다 : 인해 현재 디자인에, 나는 모든 Activities

디자인을 변환하지 않으려. 탭 중 하나를 탭하면 활동, startActivity(new Intent(getApplication(), TabActivityName.class));을 시작합니다. 문제는 이들 탭 사이를 전환 할 때 Activity의 상태가 손실된다는 것입니다. 예를 들어

: 음악 탭에

  1. 을 클릭하여 레코드 분류 fragment을 표시하는 음악 탭에서 예술가에
  2. 클릭 (예술가의 목록을 표시합니다).
  3. 비디오 탭으로 전환
  4. 음악 탭으로 다시 전환하십시오. (필자는 아티스트의 discographyFragment 여전히 보여주는되고 싶어하지만, 예술가 fragment의 주요 목록에 돌아) 내가 해봤

것들 :

  1. android:launchMode="singleTask"과에 탭 Activities 각각 변경 android:alwaysRetainTaskState="true" 현재 activity 이전에 시작된 탭으로 전환하는 경우에만 데이터가 보존됩니다.
  2. 각 탭 변경 Activitiesandroid:launchMode="singleInstance"android:alwaysRetainTaskState="true" 그러나 이로 인해 여러 개의 응용 프로그램 탭을 만드는 바람직하지 않은 효과가 발생합니다.

Fragment이 탭을 전환 할 때로드되는 Activity의 상태를 유지하는 방법에 대한 다른 아이디어는 무엇입니까?

답변

2

활동에 FragmentStatePagerAdapter을 사용할 수 있습니다. 그러나 조각으로 업데이트해야하며 상황을 처리 할 수 ​​있도록 설계되었습니다. 마이그레이션이 그렇게 나쁘지는 않습니다. 대부분의 로직을 단순히 복사 할 수 있습니다.

+0

Instagram 앱을 사용했는지 잘 모르겠습니다. 각 탭의 탐색 스택과 상태를 유지 관리 할 수있는 것 같습니다. 전체 애플리케이션이 하나의 활동 일 뿐이라는 것을 의미합니까? – Alan

+0

내가하는 일을 정확히 알지는 못하지만 활동 내에서 조각의 상태를 유지함으로써 동일한 기능을 수행 할 수 있습니다. https://developer.android.com/guide/components/fragments.html – Jlange

+1

하나의 활동으로 많은 현대 응용 프로그램을 관리하는 것은 흔한 일입니다. Instagram은 하나의 주요 활동 만 가질 수 있습니다. – Jlange