2017-06-28 5 views
0

2つのフラグメントが下部ナビゲーションビューにリンクされています。フラグメント1オンフラグメントの変更中に値を保持して通信する

  • は、チェックボックスのフラグメント2で
  • があり、私は、フラグメントを変更したときにチェックボックスがオフになっている場合は、スピナーが無効になっていることを私はしたいスピナー

あり。さらに、1番目のフラグメントに戻ると、チェックボックスの状態が維持され、2番目のフラグメントも選択されます。

答えて

0

1つのオプションは、バンドルsetArguments()を使用して各フラグメント間でデータを送信することです。欠点は、これらの値がアプリの実行中にのみ利用可能であることです。あなたのアプリケーションの状態をより永続的にするには、SharedPreferencesまたはデータベースを使って、ディスクの状態を永久にディスクに保存することができます。各フラグメントは、必要なときにデータを読み書きします。詳細については、AndroidのドキュメントのStorage Optionsを参照してください。

+0

私はShared Preferencesで試しましたが、うまくいきませんでした。私はonPause()を呼び出したときに保存しました。それは正しい出来事ですか? – Tim241

+0

@ Tim241あなたが試したことを示す新しい質問を投稿してください。最初に[ask]と[mcve]を読んで、あなたが探している答えを引き付ける良い質問をするヒントを得てください。 –

+1

実際には、私はコミットするのを忘れたので、sharedPreferencesは機能しませんでした...あなたの答えをありがとう! – Tim241

1

フラグメント2に移動する前にmainactivityからfindfragmentbyid()を使用してfragment1の参照を見つけ、チェックボックスのステータスをチェックして適切な引数データをfragment2に送信し、fragment2の引数データを取得してspinnerを無効または有効にします。フラグメント間の通信を行う必要があります。この公式の記事を読んでください。価値があります。 https://developer.android.com/training/basics/fragments/communicating.html

+0

これは、各フラグメントへの参照をクラス内のフィールドとして保持することによっても行うことができます。つまり、そのたびにフラグメントを見つける必要はありません。 –

+0

私はあなたに同意します –

+0

私の提案であなたの答えを編集してください –

関連する問題