保持对话以上的活动

时间:2012-01-11 12:40:54

标签: android user-interface android-activity

我有一个依赖于连接的应用程序它有很多活动。我需要在连接断开时显示进度重新连接对话框并保持它直到连接返回或用户解雇,无论正在运行的Activity。我创建了这个拦截连接失败事件的方法在BaseActivity中,它是我所有活动的父级:

public void xmppConnectionClosed() {
            connectionError = true;
            onScreenActivity.runOnUiThread(new Runnable() {
                @Override
                public void run() {
                    initiateReconnectionDialog(onScreenActivity); //onScreenActivity is singlton represent the current activity 
                    reconnectionDialog.setMessage(onScreenActivity
                            .getString(R.string.reconnectionDialogReconnecting));
                    reconnectionDialog
                            .setStatus(ReconnectionStatus.RECONNECTING);
                    // setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_NOSENSOR);
                        reconnectionDialog.show();

                }

            });

        }

其onCreate

protected void onCreate(android.os.Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        if (connectionError) {
            initiateReconnectionDialog(this);
            reconnectionDialog.show();
        }
    }

现在的问题是,如果我有活动A启动活动B,当我旋转设备时,活动A的onCreate被调用,如果我试图显示对话框,它会抛出一个异常,它不是前台活动。 任何想法如何处理这种情况?

2 个答案:

答案 0 :(得分:1)

这听起来像是一个必须从后台服务中提出的Dialog。必须如此,因为您不关心活动是否正在运行。该活动必须启动该服务并在后台运行。

答案 1 :(得分:0)

你可以在onRetainNonConfigurationInstance中关闭对话框。您应该可以在创建时在Activity中重新创建对话框。