首先,我有两个活动:Splash 和 MainActivity(仅支持纵向)。在 MainActivity 中,我有很多片段使用 Slide 菜单。我想在用户离开 MainActivity 时保留当前片段。这是我的尝试:
int currentFragment = 0;
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
currentFragment = savedInstanceState.getInt(CURRENT_FRAGMENT_KEY, 0);
switchContent(currentFragment);
} else {
// change fragment by index
switchContent(0);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt(CURRENT_FRAGMENT_KEY, currentFragment);
Log.d("onSaveInstanceState" ," current fragment" + currentFragment);
super.onSaveInstanceState(outState);
}
我的manifest
:
<activity
android:name="com.appiphany.auskills.activity.SplashActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.MainActivity"
android:screenOrientation="portrait" />
当我使用调试键构建我的应用程序时一切都很好:按主页按钮,然后返回应用程序,它打开上一个片段。但是当我建立在发布模式(使用我的私钥,我不使用proguard
)时,在 MainActivity 中按 HOME 按钮,然后再次打开应用程序,它从 SplashActivity 开始。我不知道这个奇怪的问题。我想试试这个,但它没有帮助:
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
currentFragment = savedInstanceState.getInt(CURRENT_FRAGMENT_KEY, 0);
switchContent(currentFragment);
}
有什么想法吗?
更新:我发现了另一个奇怪的问题:这个问题只发生在我从 apk 文件安装它时。安装后,手机会询问 2 个选项:Done
或Open
。如果我按open
,就会发生这个问题。当我通过任务管理器杀死应用程序,然后再次打开时,它可以正常工作。