2011-02-15 1 views
0

私はフォームアプリケーションを持っています。このアプリケーションでは、メニューオプション(M1)をクリックしてフォーム(Frm1)に移動します。これは、インテントを使用して行われます。 フォーム(Frm1)には、戻るボタンと送信ボタンという2つのボタンがあります。ユーザが送信ボタンをクリックするとフォームが送信され、戻るボタンがクリックされると、ユーザは(インテントを使用して)メニューオプションに到達します。 ユーザーがハーフ・フォームでバック・ボタン(M1に行く)をクリックすると、戻るとき(Frm1へ)タスクを続行できる必要があります。 私のロジックは、フォーム内のすべての値をバンドルに集め、Frm1からM1への途中でそれを運ぶことでした。 これは良いアプローチですか、それ以上のアイデアはありますか?アンドロイドのフォームアプリケーション

ありがとうございます。

答えて

1

フォーム(Frm1)で入力したデータがメニューアクティビティ(M1)で使用されている場合は、バンドルを使用してアクティビティ間で送信する必要があります。

これ以外の場合は、メニューアクティビティのフォームデータを操作するロジックが不要になることがあります。

あなたのアプリ(ダッシュボードまたは同様のもの)でM1の前に新しい素晴らしいアクティビティを作成することを想像してみてください。今度は、バンドルを最初のアクティビティに渡す必要があります。これは、ユーザーがメニューアクティビティを閉じるときにフォームの状態を失うためです。とにかくそれは良くありません。

フォームアクティビティでこのロジックをカプセル化できる場合は、作成することをお勧めします。 SharedPreferencesまたはSingletonストレージを使用できます。フォームのデータが文字列、数値、フラグの場合、SharedPreferencesは簡単で安全で安全なソリューションです。

1

これを行うには、バンドルを使用するのが正しい方法ですが、ユーザーが戻るボタンを押した場合は、入力したデータを保持してもよろしいですか?フォームをクリアするには何らかの方法を提供する必要があります。

+0

ありがとうございました...私はフォームをリセットするためにいくつかのボタンを用意しなければなりません... – rahul

0

もう1つの方法は、フォームデータをSharedPreferencesに保存することです。これをバンドルに保存した場合と保存しない場合の違いは、データがアプリのシャットダウン時に保持されることです。データをバンドルに保存するのは、アプリケーションのライフサイクルの間だけです。

+0

あなたはライフサイクルを適切に管理するなら、あなたは@rahulが既に持っている永続状態バンドルに必要なデータを保存しますのコード。 SharedPreferencesは実際にこれを行う正しい方法ではありません。いずれの場合でも、バンドルは非プリミティブなデータ型(シリアライズ可能な場合)を保存することもできます。 – RivieraKid

1

BundleまたはSharedPreferencesのいずれかを使用できます。 SharedPreferencesの方が良いのは、Bundleが共有プリファレンスとしてのセッションに制限されているためです。

関連する問題