答えが見つからない簡単な質問...
ビューAとBがあり、Aのボタンをクリックすると、Bが表示されます。このとき、デバイスの[戻る]ボタンをクリックすると、Aが再び表示されます。今、私はBで何かを変更し、それがAに影響を与えることを願っています。たとえば、グローバル変数を介してAの背景色を設定し、戻るボタンを押すとAの背景色が変わるようにするにはどうすればよいですか?戻るボタンをクリックしてAが表示された場合、どのメソッドが起動されますか?
答えが見つからない簡単な質問...
ビューAとBがあり、Aのボタンをクリックすると、Bが表示されます。このとき、デバイスの[戻る]ボタンをクリックすると、Aが再び表示されます。今、私はBで何かを変更し、それがAに影響を与えることを願っています。たとえば、グローバル変数を介してAの背景色を設定し、戻るボタンを押すとAの背景色が変わるようにするにはどうすればよいですか?戻るボタンをクリックしてAが表示された場合、どのメソッドが起動されますか?
Bから明示的に戻る必要があります。したがって、カラーチューザーと[OK]ボタンが必要です。ボタンはアクティビティBを閉じ、Aの値を返す必要があります。その後、Aは onActivityResultメソッドで値を取得します。
戻るボタンは結果を提供するためのものではありません。したがって、説明した動作が必要な場合。次に、誰かがBアクティビティで色を選択したら、すぐに共有設定に保存します(ファイルに名前を付けることを忘れないでください)。次に、アクティビティAのonResumeメソッドで同じ設定ファイルを読み込み、それに応じて背景を設定します。
onResume()
まず、Aのメソッドをオーバーライドする必要があります。AonResume()
が表示に戻ると起動されます。
次に、Bにメソッドを実装して、他onBackPressed()
の方法で行った設定を保存できSharedPreference
ます。次に、Aでそれを取得しますonResume()
。
したがって、ソリューション全体は次のようになります。
活動A:
@Override
public void onResume() {
super.onResume();
//blah blah
//Retrieve SharedPreferences or the saved data from B
}
アクティビティB:
@Override
public void onBackPressed() {
//save your data or settings here
}
ドキュメントのアクティビティライフサイクルはonResume()
、それがいつ実行されるかを正確に把握するのに役立つと思います。
そしてドキュメントonBackPressed()
で。
また、 SharedPreferencesも同様です。