ユーザーが自分のアプリを起動するときにEULAのようなダイアログを表示する必要がありますが、私のアプリにはダイアログの前に表示する必要のあるスプラッシュ画面もあります。これを次のようにコーディングしました:Android Activity.startActivity()とDialog.show()order
Activity A.onCreate(...) {
...
1. startActivity(Activity B) [this activity calls .finish() after x seconds]
2. dialog.show()
...
}
論理的には、これはうまくいくはずです。しかし、アクティビティBからアクティビティAに戻ると、ダイアログが表示されているように画面全体が淡色表示されますが、ダイアログウィンドウは表示されません。
活動Bが行われ、何の奇妙な問題が発生していないされた後、私はそのような、ダイアログが示すように呼び出しを逆にすることによってこの問題を回避することができました:
Activity A.onCreate(...) {
...
1. dialog.show()
2. startActivity(Activity B) [this activity calls .finish() after x seconds]
...
}
呼び出しの順序は非常に重要である理由を誰もが知っていますか?私にとっては、彼らは同じように動作するはずです。
他の方法では、startActivityForResult()でアクティビティBを呼び出し、onActivityResult()メソッドで.show()を呼び出すことができます。 – Jems
私はむしろそれが最初のアクティビティであり、ダイアログの2番目のものです - これを行うにはどうしてもonActivityResultを使用しませんか? –
なぜあなたはonActivityResultを使いたくありませんか?これは、アクティビティの終了後に何かを行う正しい方法です。しかし、あなたはスプラッシュスクリーンにeulaを表示できるので、Bアクティビティからダイアログを開始してOKを押すのを待ってスプラッシュスクリーンを隠すことができるようです。 –