0

私のアプリケーションでは、ユーザーに大きなフォーム(5〜10フィールド)に入力してもらいたいです。すべてのフィールドがEditTextsであるわけではなく、一部はSpinners、RadioButtonsなどです。

したがって、それらすべてを単一のレイアウトにする代わりに(ユーザーは画面を離れて、非常に多くの質問を見る可能性があります)。私はそれを会話/質問者のようなものとして持つことを考えました。

各回答を送信すると、最終的に新しい質問が表示されます。

質問ごとに個別のアクティビティを用意する代わりに、同じアクティビティのContentViewを変更することをお勧めします。

次のようなソリューション:

1.質問に応じて、ビューの可視性を可視化/消滅させます

2. ContentViewとすべてのonCreate()を変更します。

ContentViewsまたはVisibilitiesを10回変更する必要がある場合は非効率的です。

レイアウトでフラグメントを使用して、新しいフラグメントと置き換える必要がありますか?

そうすれば、10個のフラグメントクラスと10個のレイアウトがそれぞれ1個のフラグメントクラスになります。

これを実装する他の方法はありますか?今、私はフラグメントを使ってそれをやっています。

ありがとうございました

4

2 に答える 2

1

Fragmentsどちらの方法(つまり、動的またはレイアウトファイルの作成)でも10回書き込む必要があるため、ここでは最適な選択だと思います。

各レイアウトは以前のレイアウトに動的に置き換えられるため、フラグメントの方が適しています。

ただし、ここで1つの状況も考慮する必要があります。つまり、将来、フォームに新しい質問を追加する必要がある場合は、コードに多くの変更を加える必要があります。それ以外の場合は、これを使用するのが最適です。フラグメント。

于 2012-09-27T07:54:21.310 に答える
1

ユーザーがいくつかのリクエストを入力する必要があるという同様の状況がありました。アプリ全体で一定のステータスとナビゲーションペインがあったため、毎回新しいアクティビティを開始するのは意味がありませんでした。そこで、ナビゲーション/ステータスに上下を利用した3線形レイアウトのメインレイアウトを作成し、中央を使用して質問を表示しました。

レイアウトが数個しかないため、さまざまなレイアウトを作成し、必要に応じてそれらを膨張/収縮させました。レイアウトの数が増えると、それらを追跡して膨張/収縮させる方法が複雑になる可能性があります。

シーケンシャルフローがある場合、レイアウト/質問の追加と削除はかなり簡単です。このアプローチの欠点の1つはバックスタックです。1つのアクティビティ内にとどまると、バックプレスがアクティビティを終了するため、ロジックを自分で実装する必要があります。このアプローチには、質問票で収集したすべてのデータがすぐに利用でき、次の質問が前の回答に基づいている場合に役立つため、いくつかの利点もあります。これにより、意図的にそれらを渡す必要がある作業量が大幅に削減されます。

Fragmentsただし、このアプローチはフラグメントよりもはるかに単純であり、要件の実装に必要な時間が短いため、このアプローチを選択して以来、あまり経験がありません。

于 2012-09-27T08:15:58.037 に答える