2016-02-25 79 views
1

我有一個DialogFragment,它從文件加載信息並在屏幕上創建一定數量的EditText字段(最少可以有5-6個,也可以有幾十個)。從文件加載時它們都具有初始值。
用戶還可以通過按下按鈕添加其他文本字段。這些文本字段可以添加到現有字段之間的多個位置。一切都以編程方式添加。
當方向改變發生時,所有這些都會丟失。有沒有辦法來防止這種情況發生?不是通過保存信息然後恢復它,而只是爲了防止它發生?在方向更改時保留DialogFragment狀態

創建對話框時的字段數取決於將從文件加載的信息。發生方向變化時的字段數量不必相同。用戶可以通過按下多個按鈕中的一個來添加新的字段,以添加新的字段。該對話框可以在一個點上有30多個字段。保存狀態,然後恢復它可能需要一個複雜的方法(可能像保存靜態列表中的視圖,或可能是整個佈局)。在對話框打開的時候完全防止方向改變可能是最好的選擇,或者迫使它走向風景,因爲用戶需要輸入很多...

有沒有更簡單的方法來解決這個問題?

+1

強烈建議您正確保存並保留狀態。如果您繞過活動生命週期的過程與您所做的一樣簡單,那麼稍後您可能會在應用中引入其他問題。那麼你會希望你第一次做得正確。 –

+0

還有什麼其他問題? – Kidades

+0

如果您自行處理配置更改,您將失去輕鬆完成這些操作(以及更多)的能力:針對橫向和縱向使用不同的佈局和其他資源,對本地化語言的變化作出響應,對有效更改做出響應屏幕尺寸因爲外部顯示器(如Chromecast)。如果您說自己想要處理配置更改,則需要絕對確定您的應用需要以對於Android應用不正常的方式行事。不要將其用作避免必須在Android上正確安裝應用程序的工作的快捷方式。 –

回答

2

是的,您可以將屬性android:configChanges="orientation|screenSize|keyboard|keyboardHidden"添加到AndroidManifest.xml文件中的Activity聲明中。

+0

添加之後,它仍然表現相同。 – Kidades

+0

但keyboardHidden | orientation | screenSize正常工作! (我有一個物理鍵盤手機) – Kidades

+0

太棒了!爲尋找解決方案的其他人編輯答案。 – jaibatrik

0

在DialogFragment上調用setRetainInstance(true) 也可以在已添加它的活動上覆蓋onSavedInstance(Bundle)/OnViewStateRestored(Bundle)

相關問題