2010-05-03 35 views
1

我相信這會得到答覆,但我證明無法找到它。所以請原諒我的冗餘。如何退出當前活動到主屏幕(不使用「Home」按鈕)?

我想要做的是模擬「主頁」按鈕,它將一個回到Android的主屏幕。所以這裏是什麼導致我的問題:

  • 我有3個發射器活動。第一個(連接到主屏幕圖標)只是一個(密碼保護)配置活動。它不會被用戶使用(只是管理員)
  • 其他2(通過應用程序小部件訪問)的其中一個是問卷調查應用程序。我允許通過後退按鈕或GUI後退按鈕在問題之間跳回。問卷完成後,我總結給出的答案,並提供一個「完成」按鈕,該按鈕應將用戶帶回主屏幕。

對於問卷應用程序,我用一個單一的活動(稱爲ItemActivity)自稱(是遞歸以及使用意圖是什麼時候?)跳從一個問題到另一個問題:

Questionnaire.serializeToXML(); 
Intent i = new Intent().setClass(c, ItemActivity.class); 
if(Questionnaire.instance.getCurrentItemNo() == Questionnaire.instance.getAmountOfItems()) { 
    Questionnaire.instance.setCompleted(true); 
} else Questionnaire.instance.nextItem(); 
startActivity(i); 

最後屏幕會顯示「謝謝參與」以及之前描述的按鈕,它們應該帶回到主屏幕。但我真的不知道如何正確退出Activity。我有例如使用this.finish();但這很奇怪地再次出現「Thank you」屏幕。那麼,我怎麼才能跳回到主屏幕?

對不起。
問候,
Steff

回答

8

聽起來好像發生了什麼事是,你有你的活動的多個副本在同一時間打開。每當你開始一個活動的新實例時,你只是將新的活動添加到堆棧中 - 所有舊的活動仍然存在。當你致電this.finish()時,它只是向你展示下一個最近開放的活動。我不確定爲什麼這是「謝謝」屏幕,因爲大概只有在最後纔會打開,但是我沒有完全按照您的活動被調用的順序。

您可以嘗試修復它可以是:1)在針對不同問題開始新活動(因此一次只打開一個問題活動)後每次使用finish(),或者2)查看是否可以使用意向標誌CLEAR_TOP。這會啓動目標活動,同時殺死堆棧中可能超過它的任何東西。例如,如果您有活動:A,B,C,C,C,C,C(每個問題等),那麼使用CLEAR_TOP啓動A將會終止B和C的所有實例。您可以將它放入程序結構中通過改變用戶在開始調查問卷時看到的第一個屏幕。默認情況下,這會顯示一個「歡迎」消息,並用按鈕啓動問卷。但是,如果它是以與該意圖捆綁的特定值開始的,則會顯示「謝謝」消息。

如果你這樣做,那麼一旦你的活動A,用戶將返回到他們開始你的應用程序之前的任何地方 - 大概是主屏幕,如果它開始與一個appwidget。

+0

謝謝,我會給它一個。我在閱讀你的答案後,想知道我是否採用了一種完全錯誤的問卷調查方法...... – stfn 2010-05-04 07:54:01

相關問題