2012-02-28 71 views
1

我一直在尋找答案,但找不到合適的答案。問題是我在正常活動的頂部有一個對話主題活動。我想迫使用戶閱讀並單擊「確定」給主題活動,然後將主題活動轉移到另一個對話主題活動中,以進行其他問題或無法進入應用程序。所以,我想退出應用程序,在後面按下,而不是完成主題活動,將揭示我的應用程序的內容。這怎麼可能?以編程方式退出應用程序

+0

你能解釋爲什麼那個「對話框」不是真正的對話框,而是活動主題爲對話框。我相信這會讓我們更好地理解,所以我們可以一起爲您的案例找到最佳解決方案。乾杯 – Ewoks 2012-02-28 13:05:49

+0

它是完全定製的,包含很多功能,據我所知,我不能在正常的對話框中 – JustCurious 2012-02-28 13:10:05

+0

Oki ..只是想更好地瞭解你想用它實現什麼,因爲你說「我想強迫用戶閱讀並單擊「確定」的主題活動或無法進入「這聽起來像一個很好的理由使用自定義對話框..希望你會找到解決方案,將最適合你。歡呼 – Ewoks 2012-02-28 13:14:23

回答

2

finish()會爲你做了完美的工作;)

,但進行對話不可取消..

編輯(後問題說明澄清): 正如有人說StartActivityForResult可以工作,額外招。 的因爲你設計的App(DialogActivity1-> DialogActivity2)的方式,它可能有助於增加以下行AndroidManifest文件,爲您的所有特殊對話框的外觀活動:

android:noHistory="true"或爲意圖Intent.FLAG_ACTIVITY_NO_HISTORY設置的標誌在你啓動DialogActivityN之前。

兩條線(從清單或代碼)將使這個actitivies不要停留在Android棧,所以當你的MainActivity得到結果返回,這將是從去年DialogActivity,比根據結果收到您可以finish()或繼續造成執行MainActivity ..

當你開始這樣的活動時,不需要調用finish()來銷燬它們,你只需開始新的活動,它們將從堆棧中消失。當然,就你的情況而言,最後一次DialogActivity你將從StartActivityForResult()開始,正如我在前面段落中所解釋的,MainActivity會根據收到的結果做一些事情。

然而使得用戶多次經歷這些對話在一開始應用,是不是我會考慮好的做法,它可以讓你的用戶乾脆放棄,去一些不太討厭的應用程序。 (不要犯了這個錯誤,它只是我的意見,重新考慮有關的概念)

希望你會解決它;如果你用startActivityForResult()開始你的對話活動)乾杯

+0

'finish()'將完成對話主題活動,揭示我的應用程序的內容。 – JustCurious 2012-02-28 12:55:40

+0

是否有任何真正的原因,你讓它活動(看起來像對話框),而不是真正的對話?! – Ewoks 2012-02-28 13:00:27

2

可以從傳回的結果RESULT_CANCELED對話框,並且一旦收到(在您的主要活動中),請致電finish()

+0

好主意!我會嘗試 – JustCurious 2012-02-28 13:04:22

+0

以及...我的對話實際上是一個兩頁。所以有2個活動。我可以爲第一個做,但下一個活動呢? – JustCurious 2012-02-28 13:13:33

+0

在這種情況下,我可能會使用Fragments實現所需的效果,但如果這不是一個選項,您必須找到一種方法將值返回給第一個活動,告訴它是否點擊了「確定」。可能使用'SharedPreference',因爲這也可以讓你的應用程序記住用戶上次選擇的內容? – Jave 2012-02-28 13:21:58

1

如果你知道ActivityforResult那麼方法可以讓你變得更加容易,首先你需要開始與方法startActivityforResult對話活動...然後在對話框活動親近的背按鈕,您可以通過設置結果將其關閉。在開始活動的OnactivityResult方法中,如果setResult不是相同的,則必須檢測相同並關閉相同。希望你明白了。