0

「メイン」アクティビティ (M) と「設定」アクティビティ (S) の 2 つのアクティビティで構成されるアプリがあります。S は M からのみ起動できます。S の目的は、M に影響する設定を変更することです。S には、アクティビティを終了して M に戻る「完了」ボタンがあります (M のonActivityResultメソッドを介して、M のIntent新しい設定を含む適用する)。

私の問題は、(S の「完了」ボタンの代わりに) ハードウェアの「戻る」ボタンを使用して S から M に戻ると、システムは変更された設定を知らずに M を一番上に表示することです。この動作を変更できますか? 理想的には、S が上にあるときのハードウェアの「戻る」ボタンの動作を変更して、S が終了するようにしたいと考えています (M が新しい設定を取得する方法)。

それが不可能な場合、より一般的には、「戻る」ボタンを押したときに設定を適用するにはどうしますか?

4

5 に答える 5

4

あなたは単にオーバーライドすることができますonBackPressed()

@Override
public void onBackPressed()
{
    // check if settings have been changed
    super.onBackPressed();
}

これは「終了アクション」であるためsuper、他の作業を完了してから呼び出しを行います。

blackbelt の回答に残されたコメント (現在は削除されたコメント) をフォローアップします。まだ検討していない場合は、ユーザーが設定に入って変更しないことにした場合に備えて、保存せずに終了するかどうかをユーザーに確認することを検討してください。なんでも。変更を保存しないことにしたために戻るボタンを押したらどうなるでしょうか。キャンセルボタンのようなものをすでに用意しているかもしれません。

于 2013-07-23T14:49:36.453 に答える
2

設定を保持する静的フィールドを使用して、新しい Java クラスをパッケージに導入することもできます。

ユーザーが設定を変更したときにそれらに書き込み、アクティビティのOnResume()メソッドまたは必要に応じて後でそれらから読み取ります。

于 2013-07-23T15:21:31.457 に答える
2

onBackPressedfromをオーバーライドして、ボタンActivityから同じロジックを管理する必要がありますdone

于 2013-07-23T14:49:22.223 に答える
1

ただし、上記の答えはあなたが望むことをします:

組み込みの Android SharedPreferences の使用を検討しましたか? そうすれば、(S で行われた) 設定の変更がデバイスに保存され、アクティビティ M に設定を確認して onResume メソッドで適切に更新するように指示できます。さらに、設定は永久に保存され、S に何が起こっても問題ありません。

于 2013-07-23T14:57:45.207 に答える