私のアプリでこの状況を処理する方法は、SharedPreferencesの中央 "リポジトリ"を使用して複数の画面にシリアル化されたデータを保存することです。新しいアクティビティ(またはあなたのケースではフラグメント)が作成または再開されるたびに、シリアライズされたデータレポに到達してその共有データが設定されます。
これはあなたのケースではこれがうまくいくと思います。あなたの "ユーザー"の例を使用するには、ユーザーデータオブジェクトのリストを保存するSharedPreferencesファイルを作成します。だから私は、ユーザーについて知る必要があるすべてのもの、つまり情報、「好き」の状態などを保存するクラスを用意します。私はどこかのリストにユーザーを持っていると仮定すると
は、私はちょうどGsonでそれをシリアル化し、私が作成したSharedPreferencesにシリアライズされたデータを保存します。次に、各フラグメントは、シリアル化されたデータをポーリングするだけで、ユーザーの現在の状態を取得できます。いくつかの変更が行われた場合、各Fragmentはデータを同じSharedPreferencesファイルに保存して、他のFragmentがそれを使用してビューをインスタンス化できるようにします。
ここにいくつかの擬似コードは
...次に、あなたがどこかのユーザーのリストを持っていると仮定すると、私はそのリストをシリアル化し、このようなファイルグローバルSharedPreferencesに保存します...
//Some kind of data class for User
class MyUser {
String name;
String location;
String likeStatus;
//... whatever else
}
ですその後
//ArrayList<MyUser> users <- defined somewhere
Gson gson = new Gson();
String usersJson = gson.toJson(users);
SharedPreferences userPrefs = getSharedPreferences("users_storage", MODE_PRIVATE);
SharedPreferences.Editor editor = userPrefs.edit();
editor.putString("users_data_key", usersJson);
editor.apply();
新しいフラグメントがロードされ、それがユーザーの現在の状態を知る必要がありますされ、それは単に
012 ... SharedPreferencesファイルを開き、このようなすべての現在の状態を取得します
このアプローチはすべてあなたのアクティビティで実行され、新しいフラグメントを開始するときは、正しくインスタンス化する必要があるデータを渡すだけです。次に、フラグメントがデータを保存する必要がある場合、単にアクティビティのメソッドを呼び出し、保存する必要のあるデータを渡すだけで、アクティビティは上のコードを実行して保存します。
imoはコンテンツプロバイダー – Pooya
のeventbus apiを使用することができます。いくつかのイベントをアクティビティに投稿して、どのメソッドをトリガーしてもかまいません。または、http://developer.android.com/intl/es/training/basics/fragments/communicating.htmlをご覧ください。 –