显示简单的消息对话框

在我的活动中,我想展示简单的信息对话框,例如:

new AlertDialog.Builder(context).setMessage(message).show(); 

如果我这样做,当我旋转手机时,对话框会泄漏(更不用说它也会消失,所以用户可能会错过它)。 我可以使用托pipe对话框,但是我不确定如何合理地使用这些types的短消息? 看起来你必须这样做:

 showDialog(SOME_DLG_ID); ... @Override onCreateDialog(int id) { if (id == SOME_DLG_ID) { new AlertDialog.Builder(context).setMessage(message).show(); } } 

因为它的覆盖方法是没有办法将消息传递到onCreateDialog。 我讨厌做一个父活动的成员variables,只是存储当前的消息应该是什么。 你们怎么做到的?

谢谢

Solutions Collecting From Web of "显示简单的消息对话框"

如果我这样做,当我旋转手机时,对话框会泄漏(更不用说它也会消失,所以用户可能会错过)

你可以加

 <activity android:configChanges="orientation|keyboardHidden" > 

到您的AndroidManifest.xml以防止在电话旋转时重新开始活动。 我在我的应用程序中使用它,我的AlertDialog幸免于电话的旋转。

在屏幕上显示对话框之前Activity.onPrepareDialog(int, Dialog)可以实现Activity.onPrepareDialog(int, Dialog)来切换消息。 所以你可以做这样的事情:

 @Override protected void onPrepareDialog(int id, Dialog dialog) { if (id == SOME_DLG_ID) { ((AlertDialog) dialog).setMessage(message); } } 

您仍然需要跟踪您当前在活动中显示的消息,但至less这样,您并不是要为每个要显示的消息创build一个Dialog对象。

使用DialogFragmentpipe理对话框可以确保正确处理生命周期事件,例如用户旋转屏幕或按下“后退”button。