1

该应用程序有 3 个活动:A、B 和 C。
“B”具有 style=Theme.Dialog,因此它可以显示在“A”和“C”之上的屏幕的一小部分中。
这个想法是在顶部显示“B”,而“A”被“C”替换,因此“A”和“C”之间的过渡对于用户来说将是无缝的。

问题

  1. 这是正确的方法(或者我应该使用 PopupWindow 等而不是活动“B”)?
  2. 当启动活动“C”时,“B”被隐藏并再次显示(再次调用 onPause/onResume),看起来“B”正在闪烁。有没有什么办法解决这一问题?

插图

  1. 初始状态。“A”发射,“B”在“A”之上发射
  2. “A”完成了,“B”还在上面
  3. “C”发射,“B”闪烁并被带到前面(因为launchMode="singleInstance"

在此处输入图像描述

4

1 回答 1

0

当 A 和 B 是 2 个活动时,我认为您无法避免对 B 的“眨眼”效应。

也许解决方案是将 A 和 C 合并到同一个活动中。管理状态以了解新活动是否处于状态 A 或 C。

例如:

boolean stateA = ...;
if(stateA){
 setContentView(R.layout.a);
 //use code of A
 [...]
}else{
 setContentView(R.layout.b);
 //use code of B
 [...]
}

在我看来,更简单的解决方案。

于 2015-03-20T08:59:11.593 回答