0

デバイスの場所が変更されたことに気付くたびに、AlertDialog が表示されるようにします。これは、アプリケーションが適切と判断したときにほぼいつでも発生します。

問題は、新しいアクティビティが開始される直前にダイアログが表示されると、ダイアログが古いアクティビティで消えてしまうことです。AlertDialog で新しいインテントをブロックする方法はありますか? または、新しいアクティビティに変換しますか (コンテキストを更新できますか)?

AlertDialogs は、デバイスが回転するケースも処理しないことに気付きました。そのため、これに対する期待はあまり高くありませんが、任意の入力が役立ちます。

4

2 に答える 2

2

単純に SharedPreference 設定を使用して、中断する可能性のあるアクティビティが開始されるたびに確認します。

元;

  1. 共有設定値を 1 に設定
  2. 対話を開始
  3. 終了したら、共有設定を 0 に保存します
  4. アクティビティが開始され、共有設定が 1 の場合、中断されたのでアラート ダイアログを開始します。0 の場合は次に進みます。

繰り返しますが、AlertDialog はそれ自体をアクティビティにアタッチすることを意図しているため、前のアクティビティが押し戻されたり、画面のフォーカスが失われたりした場合 (UI スレッドは基本的に保留にされます!)、実際に死ぬのを止めることはできません。

このマイナーな修正で問題を解決できることを願っています。

ダニエルがコメントしたことを追加すると、カスタム トースト素晴らしいものになります。ただし、それらは約 3.5 秒に制限されています (私が思うに) カスタム トーストの詳細。http://developer.android.com/guide/topics/ui/notifiers/toasts.html#CustomToastView

于 2012-10-04T03:44:26.103 に答える
0

あなたの質問は私には明確ではありません.デバイスの場所が新しいアクティビティの上に変更されたときはいつでもアラートダイアログを表示する必要があることを理解しました.バンドルを使用して、ブール値フラグも渡します。新しいアクティビティでブール値フラグが true の場合は、Alertdialog ボックスが表示されonCreateます。必要なものが得られることを願っています。これが最適なシナリオです。また、これらのアクティビティの履歴を保持すると、これを実装しているときにアプリに影響を与える可能性があります。

于 2012-10-04T03:56:41.593 に答える