2011-09-13 18 views
0

我经常在活动开始后立即创建并显示AlertDialog。在过去,我已经完成:什么时候应该触发Android Alert Dialog?

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根据您的要求。

欲了解更多信息,请参见Android Activity LifeCycle

+0

一个问题用OnStart方法是,每个活动变得可见时触发。 onResume也一样,但实际上可能会更糟,因为onResume会在对话结束后触发。 onContentChanged()我会查找的。 – Richard

+0

..是的,这就是为什么我说根据您的要求。我怀疑onStart()功能实际上是Android中的一个错误......当一个活动在它出现时触发它是没有意义的。 Android似乎只适用于谷歌和其他人。 – Merlin

+0

有点破解,但你可以在onRestart()中设置一个标志,并在onStart()中检查它的值,你会知道是否显示对话框是正确的 – Merlin

相关问题