2012-10-10 36 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

为我工作!谢谢。 –