我已经通过编程创建了几个TextView。当屏幕旋转时,我会失去所有添加的文本视图及其文本值。最好的方法是什么,以保存它们并在旋转后进行恢复。我正在使用TableLayout,并添加行,每行有四个TextView。我不想阻止设备旋转。
我已经通过编程创建了几个TextView。当屏幕旋转时,我会失去所有添加的文本视图及其文本值。最好的方法是什么,以保存它们并在旋转后进行恢复。我正在使用TableLayout,并添加行,每行有四个TextView。我不想阻止设备旋转。
您应该使用onSaveInstanceState来保存您的状态,然后在onCreate中重新创建它。这适用于Activity和Fragment,但我认为方法的可见性略有不同(对于Fragment而言,它们是公共的)。
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putString("text1", text1.getText().toString());
// do this for each of your text views
// You might consider using Bundle.putStringArray() instead
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// initialize all your visual fields
if (savedInstanceState != null) {
text1.setText(savedInstanceState.getString("text1", ""));
// do this for each of your text views
}
}
您需要在设备旋转时保持状态。由于您的视图是动态创建的,因此您需要将所有这些信息存储在适合您的应用程序的“模型”中。Android开发者网站有更多信息。
“为了在运行时配置更改期间保留对象:
覆盖onRetainNonConfigurationInstance()方法以返回要保留的对象。 当您的活动再次创建时,请调用getLastNonConfigurationInstance()以恢复您的对象。”
请看这里:http://developer.android.com/guide/topics/resources/runtime-changes.html#RetainingAnObject