我的活动:
A - 主要活动(登录屏幕的种类),完成()进行任何其他活动
B - 用户内容
C =其他用户内容
当我去A> B> C,按回家,从启动器启动应用程序,我看到C与后台堆栈恢复B> C(上),这里没问题
当我去A> B> C,按回家,从主屏幕上的谷歌搜索栏启动应用程序,我看到A,带有Back Stack B> C> A(上)。
问题是为什么会发生这种情况,我该如何解决?
Manifest的片段:
<activity
android:name="ActivityA"
android:label="@string/app_name"
android:launchMode="standard"
android:windowSoftInputMode="stateHidden|adjustPan" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name="ActivityB"
android:label="@string/b_screen_title" >
</activity>
<activity
android:name="ActivityC"
android:label="@string/c_screen_title"
android:windowSoftInputMode="stateVisible|adjustResize" >
</activity>
答案 0 :(得分:1)
当您使用Google搜索栏然后选择您的应用时,它会启动根活动(在您的情况下为ActivityA
)。这与启动应用程序时启动程序的功能不同(如果应用程序已在运行,则只将现有任务带到前台)。要在您的应用中模拟此行为,您可以将以下代码添加到ActivityA.onCreate()
:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate();
// If we are not the root of this task, it means that this activity has been launched
// by another mechanism (ie: Google Search)
if (!isTaskRoot()) {
// This isn't the root of this task, so just go away quietly and drop the user
// into the application wherever he left it
finish();
return;
}
// ...the rest of your onCreate() goes here...
}
答案 1 :(得分:0)
来自google开发者网站:
android:windowSoftInputMode活动的主窗口如何 与包含屏幕软键盘的窗口交互。该 此属性的设置会影响两件事:软件的状态 键盘 - 无论是隐藏还是可见 - 当活动变为时 用户关注的焦点。对活动的调整 主窗口 - 是否调整较小以便为软件腾出空间 键盘或其内容是否平移以使当前焦点可见 当部分窗口被软键盘覆盖时。 该设置必须是下表中列出的值之一, 或者一个“州......”值加上一个“调整......”值的组合。 在任一组中设置多个值 - 多个“state ...”值, 例如 - 有未定义的结果。各个值是分开的 通过竖线(|)。
在清单中,您同时给出2个调整参数,这可能导致未定义的结果。 试一试