我有活動A,啓動活動B(singleInstance)。在活動B有一個返回按鈕,開始意圖活動A.Android活動導航流問題
A - >乙 - >
我想達到以下行爲:
用戶觸發B於A,後按下後退按鈕,返回到活動A並按設備的硬件返回按鈕,將其導航至設備的主屏幕。
現在看起來像這樣: 用戶在A上觸發B,然後按下後退按鈕,返回到活動A並按設備的硬件返回按鈕,再次將他導航到活動A,然後再次按返回按鈕並打開活動B.然後他按下按鈕和活動A發生,它是一個無限循環....
我不能使用標誌NO_HISTORY,因爲我想從其他一些原因保存活動B的狀態。 Activity B是一個web瀏覽器,所以我已經重載了onSaveInstanceState和onRestoreInstanceState方法來保存已加載的緩存網站。
現在我在活動A中重載onBackPressed方法,通過開始一個意圖到主屏幕,但它不是一個好的解決方案。
您有任何其他想法嗎?
下面是代碼:
活動A: Intent browser = new Intent(this, B.class); this.startActivity(browser);
活性B: `@Override 公共無效的onSaveInstanceState(捆綁savedInstanceState){super.onSaveInstanceState(savedInstanceState);新的對象[] {savedInstanceState}); } @Override public void onRestoreInstanceState(Bundle savedInstanceState){ super.onRestoreInstanceState(savedInstanceState);
callWebViewMethod("restoreState", new Class[] { Bundle.class },
new Object[] { savedInstanceState });
}
@Override
public void onBackPressed() {
if (webView != null) {
if ((Boolean)callWebViewMethod("canGoBack"))
{
callWebViewMethod("goBack");
}
else
{
startActivity(getBackIntent());
}
}
}
private Intent getBackIntent() {
Intent i = new Intent();
// some code here
i.setClass(this, A.class);
return i;
}`
。我也嘗試在活動B到A的意圖上使用FLAG_ACTIVITY_CLEAR_TOP標誌,但它也不能按預期工作。 –