2012-10-29 51 views
4

我正在開發一款捕獲圖像的應用程序作爲其中一項功能。在我的主屏幕上,我有兩個微調。選擇微調器值後,用戶可以通過點擊拍照按鈕來拍攝圖片。直到這個工作正常。但問題在於Camera App Orientation。Camera App Orientation刷新父級活動?

拍照按鈕啓動相機。當圖像被捕獲時,它被保存(絕對正常)並回到父活動。 但問題是它刷新活動。而回來後,我可以看到以下有線東西

1.)有些時候,它顯示橫向屏幕(1秒)並返回到portait刷新活動並導致重置Spinner值。

2.)有些時候它只是重置微調值。

這真的很煩人。我沒有任何線索可以解決這個問題。我希望你們中的一些人能解決這個問題。

備受讚賞。

+0

關於這個強制切換到景觀,我的食譜沒有任何好消息給你。相機應用程序橫向運行,而Android系統有時不夠快,無法按照您的活動請求僅運行肖像。這就是爲什麼我使用橫向導向進行可能會引起相機意圖的活動,即使這意味着我必須自己僞造肖像方向。 –

回答

2

當您在另一個應用程序(相機)中啓動活動時,爲任何事情做好準備是件好事。該活動可能會返回錯誤的數據,屏幕方向可能會更改,或者可能需要很長時間才能返回到您的應用程序。從您的描述中,聽起來好像每次啓動相機應用時方向都在變化。

Android有內置的狀態管理方法來處理這種類型的場景。您可以覆蓋onSaveInstanceState()方法來存儲活動的狀態(例如微調器值),然後在onCreate()中恢復該狀態。 (例here)這將處理在你啓動相機應用程序,或者您的用戶按下Home鍵,然後返回到應用程序等

編輯情況:

onRestoreInstanceState()是隻有當你的活動因內存壓力而被殺死,然後重新創建時纔會被調用。使用傳遞給onCreate()Bundle(在設備旋轉後再次調用)代替它更加可靠。 Bundle將包含存儲在onSaveInstanceState()中的所有內容。

如果需要推遲你的工作,直到onResume(),你需要使用onCreate()來填充你的Activity類中的一些成員變量,然後利用這些變量的onResume()

+0

感謝您的詳細解答。我會嘗試這些並回來給你 – GoCrazy

+0

我試過你的答案,但onrestoreInstancestate永遠不會被調用。也是任何可能的方式來打電話onresved inatumestate在onresume ..謝謝 – GoCrazy

+0

你是否「在'onResume'」調用onRestoreInstanceState'「?您不需要從'onResume'調用'onRestoreInstanceState'或'onSaveInstanceState'。我已經擴展了我的答案來解決您的問題。 – acj