2011-02-14 33 views
1

Basiclly我現在有兩個屏幕。問題和答案屏幕。當您點擊答案時,您認爲答案出現在問題屏幕上,它會將答案屏幕告訴您是否正確。接下來的部分是從那個屏幕回到問題屏幕,並且您被問到另一個問題。目前這正在創造大量的新活動,並且很容易失控。 我需要的是知道何時問題活動得到3並停止。基本上來自於原因屏幕,您可以返回查看問題,但是當您遇到新問題時,應該刪除舊的和原因頁面。在活動堆棧中查找活動位置

我該怎麼做?

回答

1

在答活動,你應該叫this.finish(),並且將回到問題的活動。在問題活動中,使用startActivityForResult啓動AnswerActivity,以便在答案完成時通知問題Activity,這樣您可以顯示新的問題等,因此每個AnswerActivity都將被銷燬。如果您需要幫助,請發佈代碼示例。如果以這種方式構建,則不需要在堆棧中查找活動。

問題活動

this.startActivityForResult(Intent, requestCode); // somewhere in your code to launch the Answer Activity 

public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    // now we have returned from the AnswerActivity and it has been destroyed 
    // do any processing here on the answer or show a new question. 
} 

答活動

public void onBackClick(View v) { 
    //on click handler for a back button or something. 
    this.setResult(resultCode, Intent /* some data to give back to parent */); 
    this.finish(); 
} 
+0

感謝您的快速性反應。你可以發佈任何代碼snippits以供參考。我對這一切都很陌生。更新了 – Somk 2011-02-14 19:13:14

0

我不知道的方式直接從框架做到這一點,但你可以做手工,(我認爲)。您可以在代表問題活動的任務標識的應用程序級別維護一個整數列表。每次活動開始時,您都會將getTaskId()的值推送到此列表中。在啓動活動的代碼中,您可以廣播問題活動響應的意圖。如果它的getTaskId值處於列表中的某個位置,則可以在該活動上調用finish()並從列表中刪除其任務ID。

這是一個非常哈克解決方案,但據我所經歷的,singleTop launchMode是行不通的