【发布时间】:2012-05-08 03:40:39
【问题描述】:
我的理解是,当您更改设备方向时,您的应用会被销毁并重新创建。这意味着 onCreate() 应该在我每次旋转设备时运行。
我试图在每次创建应用程序时设置一个 EditText,包括旋转屏幕时。所以,我启动应用程序,文本字段显示“Bap”。然后我将字段的内容更改为“Boop”,然后旋转屏幕。我希望该字段现在会说“Bap”,但事实并非如此,它在我更改它之后,在方向更改之前保持不变。这是为什么呢?
我的 onCreate() 看起来像这样:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
EditText editText = (EditText)findViewById(R.id.edit_message);
editText.setText("Bap", TextView.BufferType.EDITABLE);
}
值得注意的是,如果我将 setText() 调用移到 onResume() 中,一切都会按照我的预期进行,每次旋转设备时都会重置文本字段。
注意:我知道a similar question has been asked,但给出的答案并没有真正解释为什么会发生这种行为。
【问题讨论】:
-
当方向改变时需要检查,
oncreate方法已被调用。 -
听起来您在 AndroidManifest.xml 中明确定义了 android:configChanges。查看Activity API - Configuration Changes section 了解如何更改默认行为。
-
@yorkw:刚刚检查过,AndroidManifest.xml 没有提及 android:configChanges。
标签: java android mobile android-activity