2010-01-29 21 views
2

目前我正在開發一個動態創建控件的Android應用程序。每次用戶點擊一個按鈕,一個新的EditText出現在按鈕下方,用戶可以與EditText進行交互。但是,如果屏幕方向改變,用戶創建的EditText也會消失。用戶創建的EditTextAndroid:動態創建控件和方向更改

代碼示例:(位於的onClick(),p是基本layoutParamas和佈局是位於undearneath該按鈕的LinearLayout)

EditText editText = new EditText(this); 
    layout.addView(buttonView, p); 

想知道什麼將是最簡單的方法當屏幕方向改變時保存佈局,所以我不會丟失任何控件,或者我會錯誤地創建控件。

謝謝。

更新:通過重寫onSaveInstanceState()我可以保存一個對象,其中包含用戶的所有控件的列表中的任意添加。使用這個列表我能夠在onCreate()中創建控件。

仍然很好奇,如果有更簡單的方法來完成此任務,因爲我將不得不重構大量的代碼來完全實現此方法。

+0

所以你能夠保存一個實際的對象?我的活動允許用戶將窗口小部件視圖放入,與您基於他們所做的添加視圖的過程非常相似。我想將小部件[]保存到捆綁包中,但我不知道如何。 – mylock 2010-02-18 07:39:06

+0

有幾個指南可以在網上找到。例如:http://www.anddev.org/putting_an_object_into_a_bundle-t6431.html 基本上你必須讓對象實現Serializable或Parcelable。然後使用bundle.putSerializable或者bundle.putParcelable,你可以傳遞這個對象。對不起,延遲迴復 – BigAlHt 2010-02-25 17:15:42

回答

5

嘗試在你的清單文件添加以下內容到<activity>標籤:

android:configChanges="orientation|keyboardHidden" 

然後做這項活動中類:

@Override 
public void onConfigurationChanged(final Configuration newConfig) 
{ 
    // Ignore orientation change to keep activity from restarting 
    super.onConfigurationChanged(newConfig); 
} 

如果你這樣做你的活動將只在方向被重用改變而不是銷燬/重新創建。所以你不必保存你所進行的一切事情。

+0

魔獸世界。非常感謝。很棒的作品。 – BigAlHt 2010-01-30 00:55:25