Android N 开发者预览版 1 的文档表明您可以使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT
请求 Android 在单独的窗口(自由格式)或相邻的 Pane (分屏)中启动 Activity . Google 的示例代码显示使用 Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT | Intent.FLAG_ACTIVITY_NEW_TASK
来完成这个。
如果正在启动的 Activity 与启动的 Activity 是不同的类,则此方法工作正常。
因此,例如,如果您有一个 MainActivity
,它具有以下代码来启动其自身的单独实例:
Intent i=
new Intent(this, MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT |
Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(i);
然后结果是 FLAG_ACTIVITY_LAUNCH_ADJACENT
被忽略,新的 Activity 实例进入现有窗口或 Pane 。
但是,如果您启动任何其他 Activity(例如,SecondActivity.class
),则 FLAG_ACTIVITY_LAUNCH_ADJACENT
会像宣传的那样工作。
如果您希望允许用户从您的应用中打开两个电子表格、两个记事本或两个其他东西怎么办?我们如何使用 FLAG_ACTIVITY_LAUNCH_ADJACENT
启动同一 Activity 的两个实例?
最佳答案
根据 this issue 上的讨论,您还需要融入 FLAG_ACTIVITY_MULTIPLE_TASK
:
Intent i=
new Intent(this, MainActivity.class)
.setFlags(Intent.FLAG_ACTIVITY_LAUNCH_ADJACENT |
Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_MULTIPLE_TASK);
startActivity(i);
然后这两个 Activity 实例将位于单独的窗口/ Pane /其他任何地方。
This sample project为 N Developer Preview 1 演示了这一点。
关于android - 如何在 Android N 多窗口中将相同的 Activity 启动到单独的窗口中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35986714/