2012-03-24 46 views
2

我有一個包含2個活動的應用程序:A1和A2。當我運行應用程序時,它會打開A1活動。然後按下按鈕(我使用startActivityForResult(intent,0))打開A2。然後如果我按下返回到A1。一切都好。後退按鈕不會切換到上一個活動,但會退出Android應用程序

但是,如果我在A2的活性和切換到另一個應用程序,然後返回回我的應用程序,然後我按回到和退出應用程序,而不是切換到A1的活動。 我能做些什麼來防止這種情況發生?

,從A1 A2調用代碼:

@Override 
public void onClick(View v) { 
    Intent intent = new Intent(getApplicationContext(), A2.class); 
    startActivityForResult(intent, 0); 
} 

宣言在AndroidManifest.xml:

<activity 
    android:name="A1" 
    android:launchMode="singleInstance" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
</activity> 

<activity 
    android:name="A2" 
    android:launchMode="singleInstance" 
    android:theme="@android:style/Theme.NoTitleBar.Fullscreen" > 
</activity> 
+0

你可以發佈你的清單文件,至少聲明A1和A2的部分? – 2012-03-24 14:46:16

+0

我使用AndroidManifest.xml更新了帖子 – gflower 2012-03-24 15:16:38

回答

1

在你的活動過度乘坐的返回按鈕,做任何處理,你想..

@Override 
public void onBackPressed() { 
    //Do whatever you want here on back button press 
} 

但是在你的情況下,如果A2是只有通過startActivityFroResult()從A1開始,那麼A1必須始終保持在activity stack-trace..thus後面應該總是回到A1 ..除非android系統由於不活動/高而清理A1活動用法。

+0

如何在切換到其他應用程序時保留堆棧中的A1活動並返回? – gflower 2012-03-24 14:26:58

+0

你可以發佈你的代碼,你在哪裏開始活動A2從A1 – 2012-03-24 14:27:42

+0

我發佈了代碼。這很簡單 – gflower 2012-03-24 14:39:42

1

當您通過Intent調用A2時,您正在調用this.finish();還是finish();標記?您可以使用onPause()onResume()方法。如果沒有任何OP提供的代碼,答案將基於猜測一點。如果我猜錯了,請糾正。 :-)

另外,用一些代碼更新OP。而且,您還可以閱讀有關Activity's Life Cycle

編輯:這個問題似乎在這裏類似於這裏:Android is killing my application whenever startactivityforresult is called。再次,它歸結爲保存活動狀態,這是活動生命週期的一部分。

+0

我在調用A2時沒有使用finish()。我更新了這篇文章。代碼很簡單。 – gflower 2012-03-24 14:36:29

+0

@gflower:我已更新帖子。新鏈接與您的問題確實有相似之處。給那個人一看。 – 2012-03-24 14:48:44

0

嘗試在清單中更改singleInstancesingleTask。使用singleInstance時,Android不會在您的任務中啓動任何新實例(即活動返回堆棧),這意味着如果根Activity被操作系統銷燬,它將不會調用A1的onCreate來重新創建它。

詳細信息請見Tasks and Back Stack document"Defining Launch Modes"。請注意,一旦A1遭到破壞,您將失去其所有狀態,因此您可能需要執行onSaveInstanceState,這將允許您保存將在onCreate中傳遞給您的Bundle

+0

不幸的是,將launchMode更改爲'singleTask'甚至是'standard'並沒有幫助 – gflower 2012-03-24 16:24:14

+0

在這種情況下,我會將日誌記錄添加到A1的'onCreate'中以查看它是否被調用。也許也實現'onDestroy'只是爲了添加日誌消息來查看它何時被銷燬。 – 2012-03-24 16:58:50

相關問題