特定の状況下でAlertDialogをポップアップするアクティビティがあります。
ただし、デバイスを回転させると、アクティビティが破棄されて再作成され、AlertDialogがなくなります。
人々はこれをどのように扱っていますか?
フラグをsavedInstanceStateに保存して、作成時にAlertDialogを再度スローするようにアクティビティに通知するのは簡単ですが、AlertDialogに大量のデータが必要であり、そのデータが動的である場合はどうでしょうか。それは本当に速く醜くなるでしょう。
特に私の場合:
アプリがWebサービスを呼び出したい場合、IntentServiceを起動し、必要なデータ(Webサービスに送信するための資格情報とデータ)を含むIntentを渡して起動します。ログインエラーが原因でIntentServiceによって処理されているインテントが失敗した場合、インテントは私のアクティビティに聞こえるメッセージをブロードキャストします。ActivityとListActivityを拡張し、BroadcastReceiverを追加しました。私のアプリのアクティビティはこれらから拡張されます。次に、ユーザーの資格情報を要求するAlertDialogをポップアップします。元のインテントのエクストラも渡されるため、ログインに成功すると、再処理できます。残念ながら、ユーザーが画面の向きを変更すると(たとえば、ハードウェアキーボードを引き出すなど)、AlertDialogは表示されなくなります。