29

これは、Androidプラットフォームでアプリケーションのようなウィザードを実行するための最良の方法だと思います(ユーザーは[次へ]ボタンと[戻る]ボタンで画面間を移動でき、各画面にはいくつかの状態データを保存する必要があります)。

私は主に2つのアプローチで考えることができます:

  1. 画面ごとに1つのアクティビティとビューを設定し、各アクティビティを呼び出して画面を切り替えます。これが素晴らしいのは、システムの戻るボタンをバックハンドラーとして使用できることです。また、各アクティビティが独自の状態を保存するので、自分でそれを処理する必要はありません。

  2. 1つのアクティビティと多くのビューがあり、各画面でビューを切り替えると、より多くのコードを再利用できますが、状態の保存が混乱します。

どう思いますか?Androidでこれを行うための最良の方法はどれですか?

4

5 に答える 5

17

このライブラリは現在開発されていません。

ViewModelsと組み合わせてAndroidナビゲーションコンポーネントを使用して、ウィザードフローを構築します。


私は軽量のAndroidライブラリを開発しました。これは、AndroidのViewPagerの上に構築されており、ウィザードのようなアクティビティの作成に使用できます。それをチェックしてください:WizarDroid

于 2013-04-01T20:19:07.717 に答える
12

アクティビティとビューの目標に合っているので、2を使用することをお勧めします。この場合の状態の保存は簡単です。MVCパターンを使用すると、ビューに渡されるモデルオブジェクトを簡単に作成できます。各ビューには、読み取り/書き込みが可能なモデルの部分があります。どこにいても、モデルは常に現在の状態である必要があります。処分された場合は、モデルを保存するだけです。各ページを表示するときにモデルから既に読み取ったため、復元は自動的に機能します。

于 2009-06-18T16:57:50.373 に答える
6

より自然に見えるので、私は最初のアプローチを採用しました。別のアプリはViewFlipperビューの切り替えに使用しますが、それはウィザードのようなものとはほど遠いものです。

于 2009-06-18T16:47:29.677 に答える
2

9年前、これは明らかに非常に異なる魚のやかんでしたが、今これを行うための最良の方法はフラグメントを使用することだと思います。

ウィザードの「ページ」ごとにフラグメントを作成し、独自のライフサイクルと状態を処理できるようにします。

Fragment.getFragmentManager()を使用して、各フラグメント内からページを変更します。これにより、親アクティビティからFragmentManagerが返され、フラグメントがそれ自体を置き換えることができます。

于 2018-12-04T10:22:03.957 に答える
1

2の方がいいと思います。各「ページ」をビューに配置してから、表示と非表示を交互に切り替えます。素敵なトランジションを行うのは簡単です。どのような状態を維持することを考えていますか?自動的に機能しないのはフォーカスだけです。ページを切り替えるたびにフォーカスをリセットすることをお勧めします。それがアプリにとって正しい動作であると思われる場合は、キャッチバックすることも簡単です。

1を使用すると、ほとんどすべてのコードを再利用できます(独自のWizardBaseクラスを定義するだけです)が、ビューを切り替えるよりもアクティビティの起動がはるかに遅い(そしてより多くのメモリが必要になる)と思います。

于 2009-06-18T16:43:05.637 に答える