2011-09-13 21 views
0

私は時々、アクティビティの開始直後にAlertDialogを作成して表示したいと思っています。過去に私はこれを実行しました:Androidの警告ダイアログはいつ起動する必要がありますか?

public void onCreate(Bundle savedInstanceState) { 
    ... 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    ... 
    builder.create.show(); 
    ... 
} 

アクティビティがまだ実際には作成されていないため、これは悪いようです。そして時々AlertDialogが画面上にあるはずのように画面が「暗く」見えますが、実際には表示されません。

最近、私はHandler/Runnableを使ってAlertDialogの起動を数ミリ秒遅らせています。それもかなり自由に思える。

アクティビティの初期化直後にAlertDialogを表示するためのベストプラクティスは何ですか?

答えて

0

厳密に活動を話すonStartonWindowFocusChanged

1

にダイアログを表示するには、作成されているが、それの内容はなかったです。

多くの人がonCreate()メソッドにあまりにも多くを置く。

ビューが存在する場所をオーバーライドできる最初の方法はonContentChanged()です。これは、値を設定するなど、ビューを実行するのに適しています。

お客様の要件に応じて、onStart()、場合によってはonResumeを使用することができます。

詳細についてONSTARTメソッドを使用してAndroid Activity LifeCycle

+0

一つの問題を参照してください。それは活動が目に見えるようになるたびに発射するということです。 onResumeも同じですが、ダイアログが閉じられた後にonResumeが起動するため、実際には悪化する可能性があります。 onContentChanged()を参照します。 – Richard

+0

..はい、そういうわけで私はあなたの要求に応じて言ったのです。私はonStart()機能が実際にアンドロイドのバグだと思っています...それは、それが前面に来るときにこれを起動するアクティビティには意味がありません。 AndroidはGoogleと他の誰でも正しく動作するように見えます。 – Merlin

+0

ハックのビットですが、onRestart()にフラグを設定して、onStart()の値を確認することができます。これは、ダイアログを表示するのが正しいかどうかを知ることでした – Merlin

関連する問題