首先,我有兩項活動:Splash和MainActivity(僅支持肖像)。在MainActivity中,我有許多片段使用Slide菜單。我想在用戶離開MainActivity時保留當前片段。這裏是我的嘗試:只有在發佈模式下按住HOME時活動纔會死亡
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" />
一切都很好,當我建立我的應用程序的調試鍵:按Home鍵,然後再返回到應用程序,打開它之前的片段。但是,當我建立在釋放模式(使用我的私鑰,我不使用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
,則會發生此問題。當我通過任務管理器終止應用程序時,再次打開,它可以正常工作。
您看見這長期存在的令人討厭的Android bug: http://stackoverflow.com/a/16447508/769265 –