문제

Android 플랫폼에서 애플리케이션(사용자는 다음 및 뒤로 버튼을 사용하여 화면 간을 탐색할 수 있고 각 화면은 일부 상태 데이터를 저장해야 함)과 같은 마법사를 수행하는 가장 좋은 방법이라고 생각합니다.

나는 주로 두 가지 접근 방식으로 생각할 수 있습니다.

  1. 각 화면마다 하나의 활동+보기를 갖고 각 활동을 호출하여 화면을 전환합니다.이것이 좋은 이유는 시스템 뒤로 버튼을 내 뒤로 핸들러로 사용할 수 있고 각 활동이 자체 상태를 저장하므로 직접 처리할 필요가 없다는 것입니다.

  2. 하나의 활동과 여러 개의 보기가 있고 화면이 바뀔 때마다 보기를 전환하면 더 많은 코드를 재사용하는 데 도움이 되지만 상태 저장이 엉망이 됩니다.

어떻게 생각하나요?Android에서 이 작업을 수행하는 가장 좋은 방법은 무엇입니까?

도움이 되었습니까?

해결책

나는 활동과 견해의 목표에 맞는 2로가는 것이 좋습니다. 이 경우 상태 저장은 쉽습니다. MVC 패턴을 사용하는 경우보기에 전달되는 모델 객체를 가질 수 있습니다. 각보기에는 읽기/쓸 수있는 모델의 일부가 있습니다. 당신이 어디에 있든, 모델은 항상 현재 상태를 가져야합니다. 폐기되면 모델을 저장하십시오. 각 페이지를 표시 할 때 이미 모델에서 읽은 이후로 자동으로 복원됩니다.

다른 팁

나는 가벼운 Android 라이브러리를 개발했는데,이 라이브러리는 마법사와 같은 활동을 만드는 데 사용할 수있는 Android의 ViewPager 위에 구축 된 가벼운 Android 라이브러리를 개발했습니다. 확인 해봐: 마법사.

나는 더 자연스럽게 보이기 때문에 첫 번째 접근 방식으로 갔다. 다른 앱이 사용됩니다 ViewFlipper 보기를 전환하지만 마법사와 같은 것과는 거리가 멀다.

나는 2가 더 좋다고 생각한다. 각 "페이지"를보기에 넣은 다음 보여주고 숨기는 것 사이를 번갈아 가십시오. 좋은 전환을하는 것은 사소한 일입니다. 당신은 어떤 상태를 유지하고 있다고 생각하고 있습니까? 자동으로 작동하지 않는 유일한 것은 초점이 될 것이며 페이지를 전환 할 때마다 재설정하고 싶을 것입니다. 그것이 당신이 앱에 대한 올바른 행동이라고 생각한다면 물러서는 것도 사소한 일입니다.

1을 사용하면 거의 모든 코드를 재사용 할 수 있지만 (자신의 마법사베이스 클래스를 정의하기 만하면) 활동은보기간에 전환하는 것보다 시작이 훨씬 느리게 진행되고 있습니다.

9년 전에는 분명히 매우 다른 물고기 주전자였지만 지금은 Fragments를 사용하는 것이 가장 좋은 방법이라고 생각합니다.

마법사의 각 '페이지'에 대한 조각이 있어 자체 수명 주기와 상태를 처리할 수 있습니다.

다음을 사용하여 각 조각 내에서 페이지를 변경합니다. Fragment.getFragmentManager() - 상위 활동에서 FragmentManager를 반환하여 조각이 자체적으로 교체될 수 있도록 합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top