1

我的活动:

A - 主要活动(一种登录屏幕),完成()去任何其他活动

B - 用户内容

C = 其他用户内容

当我去 A > B > C 时,按 home,从启动器启动应用程序,我看到 C 的后堆栈已恢复 B > C (top) ,这里没问题

当我去 A > B > C 时,按主页,从主屏幕上的谷歌搜索栏启动应用程序,我看到 A,Back Stack B > C > A(顶部)。

问题是为什么会发生这种情况,我该如何解决?

清单中的片段:

<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>
4

2 回答 2

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...
}
于 2013-05-14T16:00:18.183 回答
0

来自谷歌开发者网站:

android:windowSoftInputMode Activity 的主窗口如何与包含屏幕软键盘的窗口交互。此属性的设置影响两件事: 当活动成为用户关注的焦点时,软键盘的状态——无论是隐藏还是可见。对 Activity 的主窗口进行的调整——是否将其调整为更小以为软键盘腾出空间,或者是否将其内容平移以使当前焦点在窗口的一部分被软键盘覆盖时可见。

该设置必须是下表中列出的值之一,或一个“状态...”值加上一个“调整...”值的组合。在任一组中设置多个值(例如,多个“状态...”值)具有未定义的结果。单个值由竖线 (|) 分隔。

在清单中,您同时给出了 2 个调整参数,这可能会导致未定义的结果。试试看

于 2013-05-13T20:37:39.073 回答