对话框:在后台切换活动

时间:2014-09-24 14:26:13

标签: android android-activity dialog

我可以在对话框的背景中开始活动吗?

我想要什么:活动启动对话框,对话框交换活动显示在后台。该对话框未被驳回。

我认为只有当Dialog也是一个活动时才能这样做。

我认为是一个解决方案:

  1. 我从DialogActivity发送一个localbroadcast到Act 1
  2. 第1号法案开始第2号法案并自行销毁。
  3. 问题:第2幕将显示在DialogActivity前面。我希望它在后面切换。

    这可能吗?

1 个答案:

答案 0 :(得分:3)

请遵循以下几点以获得有效的解决方案:

  1. 要使对话框的窗口显示在所有应用程序窗口的顶部,请将其窗口类型设置为系统窗口。
  2. 使用应用程序上下文创建对话框。如果使用活动上下文创建对话框,则活动结束时,对话框也将终止,因为它被系统视为窗口泄漏。
  3. 以下是演示工作解决方案的示例代码。

    // This is a button click handler.
    public void launchDialog(final View v) {
        // Create the dialog with application context
        AlertDialog dialog = new AlertDialog.Builder(getApplicationContext())
                .setTitle("Title")
                .setMessage("This is dialog")
                .create();
        // Set the window type as system window
        dialog.getWindow().setType(WindowManager.LayoutParams.TYPE_SYSTEM_ALERT);
        dialog.show();
    
        // Demonstrates the activity change behind the dialog.
        v.postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent intent = new Intent(v.getContext(), MyActivity2.class);
                startActivity(intent);
    
                finish();
            }
        }, 3000);
    }
    

    请记住在清单中设置权限以使用系统窗口:

    <uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />