0

答えが見つからない簡単な質問...

ビューAとBがあり、Aのボタンをクリックすると、Bが表示されます。このとき、デバイスの[戻る]ボタンをクリックすると、Aが再び表示されます。今、私はBで何かを変更し、それがAに影響を与えることを願っています。たとえば、グローバル変数を介してAの背景色を設定し、戻るボタンを押すとAの背景色が変わるようにするにはどうすればよいですか?戻るボタンをクリックしてAが表示された場合、どのメソッドが起動されますか?

4

2 に答える 2

0

Bから明示的に戻る必要があります。したがって、カラーチューザーと[OK]ボタンが必要です。ボタンはアクティビティBを閉じ、Aの値を返す必要があります。その後、Aは onActivityResultメソッドで値を取得します。

戻るボタンは結果を提供するためのものではありません。したがって、説明した動作が必要な場合。次に、誰かがBアクティビティで色を選択したら、すぐに共有設定に保存します(ファイルに名前を付けることを忘れないでください)。次に、アクティビティAのonResumeメソッドで同じ設定ファイルを読み込み、それに応じて背景を設定します。

于 2012-12-07T10:41:45.820 に答える
0

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も同様です。

于 2012-12-07T10:43:58.623 に答える