1

私が作成しているアプリでは、MainMenu アクティビティに Preferences というクラスへのオブジェクトがあります。このオブジェクトを複数のページで使用したいと考えています。オブジェクトには、数値の配列を含むクラスがあります。別のアクティビティ (フィルム) で使用すると、オブジェクト内の数字の 1 つが変更されます。次に、メイン メニューに戻り、数値の配列を画面に表示する新しいアクティビティ (CurrentPrefs) に移動します。数値を表示すると、Film ファイルに加えられた変更が含まれていませんでした。そこで、変数を使って少しテストを始めました。

開始アクティビティである MainMenu を開始すると、オブジェクトが設定されます。次に、フィルムに入ってオブジェクトを確認すると、同じ名前 (object.toString()) のままです。また、値が正しく変更されていることを確認しました。

次に MainMenu に戻り、再度確認しました。オブジェクトは同じ名前のままで、値も Film で変更したようなものでした。

最後に、CurrentPrefs アクティビティに入りましたが、そこでうまくいきません。オブジェクトは突然別の名前になり、加えた変更も含まれなくなりました。

オブジェクトが変更されたのはなぜですか? さらに重要なことに、オブジェクトが変更されず、どこでも同じままであることを確認するにはどうすればよいでしょうか?

4

2 に答える 2

1

オブジェクトの値が変更された理由はいくつかあります。もしかしたら、以前のActivityものはあなたの知らないうちに破壊され、作り直されたのかもしれません。

SharedPreferenceAndroid のクラスを確認してください。これは、設定を保存、編集、および取得し、任意の場所でそれらにアクセスする方法Activityです。

http://developer.android.com/reference/android/content/SharedPreferences.html

于 2013-10-02T17:47:44.947 に答える
1

アクティビティのライフサイクルをよく知っていれば、なぜそれが起こるのかを理解することもできます。おそらく、操作の一部は、アクティビティが からまたは直後にonResume()戻るたびに呼び出されるメソッドに委譲されますが、他の操作は、アクティビティが開始されたときまたは後にのみ呼び出されます。これを制御し、更新されたすべてのオブジェクトの変数が再度読み取られるようにすべてを移動することをお勧めします。onPause()onCreate()onCreate()onDestroy()setText()onResume()

于 2013-10-02T18:39:12.023 に答える