【问题标题】:dialog: switch activity in background对话框:在后台切换活动
【发布时间】:2014-09-24 14:26:13
【问题描述】:

我可以在对话框的背景中启动一个活动吗?

我想要什么:活动启动对话框,对话框交换后台显示的活动。对话框不会关闭。

我认为只有当 Dialog 也是一个 Activity 时才能做到这一点。

我认为是一个解决方案:

  1. 我将本地广播从 DialogActivity 发送到第 1 幕
  2. 第 1 幕开始第 2 幕并自行毁灭。

问题:第 2 幕将显示在 DialogActivity 前面。我希望它在后面切换。

这可能吗?

【问题讨论】:

    标签: android android-activity dialog


    【解决方案1】:

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

    1. 要使对话框的窗口出现在所有应用程序窗口的顶部,请将其窗口类型设置为系统窗口。
    2. 使用应用程序上下文创建对话框。如果使用 Activity 上下文创建对话框,则在 Activity 完成的那一刻,对话框也将终止,因为它被系统视为窗口泄漏。

    这是演示工作解决方案的示例代码。

    // 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);
    }
    

    记得在manifest中设置权限以使用系统窗口:

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

    【讨论】:

    • 像魅力一样工作!我将其更改为常规对话框并添加了我自己的复杂布局。非常感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多