2011-07-03 85 views
7

我有一個期望用戶選擇項目的活動,但用戶可以選擇單擊後退按鈕而不選擇項目。這個「項目選擇」活動是從startActivityForResult()開始的。我是否需要顯式地將setResult設置爲RESULT_CANCELED?

我在想兩件事。首先,當實際選擇項目時是否僅僅設置了結果(RESULT_OK),即,如果我沒有明確設置結果,我能否依賴結果不被設置爲RESULT_OK?第二,如果這還不足以依賴(未初始化的)結果,可以多次調用setResult(),第一次將結果「初始化」爲RESULT_CANCELED,然後調用SetResult(RESULT_OK),然後調用SetResult(RESULT_OK)用戶選擇一個項目之後並在完成活動之前?

回答

9

documentation

如果一個子活動因故失敗(如崩潰),該 父活動將得到的結果與代碼 RESULT_CANCELED

所以結果已經是RESULT_CANCELED,如果 你沒有明確指定其他的代碼。當用戶通過「返回」按鈕退出您的 應用程序時,您也會收到RESULT_CANCELED

+0

謝謝我在文檔中看到,這是什麼提示的問題。我所描述的情況並不是該活動「失敗」。從Android API文檔中不清楚,RESULT_CANCELED是默認值是一個安全的假設,也不清楚是否可以多次調用setResult。 –

+0

文檔中另一行onActivityResult方法:「如果活動明確返回該結果,沒有返回任何結果或在其操作期間崩潰,resultCode將爲RESULT_CANCELED。」所以如果你不返回任何結果,在用戶退出活動之前用後退按鈕 - 結果是RESULT_CANCELLED。 – Dirol

+0

關於不止一次調用setResult - 它在文檔中確實沒有定義。所以我不會依賴這個。即使它可能適用於當前的API,也不能保證它將來可以使用。 – Dirol

1

您可以在每個Activity上使用setResult(RESULT_CANCELED)並致電finish()

在被覆蓋的OnActivityResult中,如我所述,如果結果代碼被取消。

相關問題