2012-10-10 33 views
9

在Android模擬器中觀察我的應用程序行爲,發現EditText內容在更改屏幕方向(Ctrl + F11)後保留。但是TextView的內容被重置爲其初始值,並且不保存程序設置的最新信息。這是行爲的定義嗎?我能做些什麼來保存這些內容?更改屏幕方向後,TextView內容丟失

回答

11

使用此屬性在您的TextViewandroid:freezesText="true"

+3

這似乎還不夠。你還有什麼補充? – 2014-01-30 21:50:01

+1

@dpk它爲我工作;沒有其他東西可以添加。 – DBedrenko

3

當方向發生變化時,Android會重新加載Activity,從而破壞大多數信息,如TextView的變化。您將需要覆蓋onSaveInstanceState(),這將在屏幕方向更改發生之前運行。然後,您將在Bundle中訪問它,並將其傳遞到onCreate。您還應該參考此處瞭解Activity生命週期。

11

可以使用savedInstanceBundle通過重寫你的活動內的兩個方法,類似於下面,以保持數據的保持:

@Override 
public void onSaveInstanceState(Bundle savedInstanceState) { 
    super.onSaveInstanceState(savedInstanceState); 
    // Save state to the savedInstanceState 
    savedInstanceState.putString("MyString", textview.getText()); 

} 

@Override 
public void onRestoreInstanceState(Bundle savedInstanceState) { 
    super.onRestoreInstanceState(savedInstanceState); 
    // Restore state from savedInstanceState 
    String myString = savedInstanceState.getString("MyString"); 
    textview.setText(myString); 
} 

添加您的項目到BundleonSaveInstanceState,並在onRestoreInstanceState在讀回。這與在創建活動時通過意圖傳遞值的方式類似。

+0

爲我工作!謝謝。 –