我有一个Activity,在某些情况下弹出一个AlertDialog。
但是,如果您旋转设备,活动将被销毁并重新创建,并且AlertDialog将消失。
人们如何处理这个?
将一些标志保存到savedInstanceState可以很容易,让Activity知道在创建时再次抛出AlertDialog,但是如果你的AlertDialog需要大量数据并且数据是动态的呢?那会很快变得丑陋。
特别是在我的情况下:
当我的应用程序想要进行Web服务调用时,它会启动一个IntentService,将Intent传递给必要的数据(凭据和数据以发送到Web服务)并启动。如果由于登录错误而由IntentService处理的Intent失败,它会广播我的活动将听到的消息。我已经扩展了Activity和ListActivity,并为它们添加了一个BroadcastReceiver。我的应用程序的活动从这些扩展。然后,他们弹出一个AlertDialog,请求用户的凭据。最初的Intent的附加内容也会被传递,因此,在成功登录后,它可以被重新处理。不幸的是,当用户更改屏幕方向时(例如,通过拉出硬件键盘),AlertDialog将消失。