设备方向销毁活动

时间:2019-08-02 20:01:08

标签: android android-layout

大多数情况下,我的应用程序都可以正常工作,但是按钮和文本视图的文本会根据某些状态变量而变化。当我更改设备的方向时,它将破坏并以新的方向重新创建活动。我尝试添加

android:configChanges="orientation"

到清单文件。我还尝试覆盖onConfigurationChanges方法以“不执行任何操作”,但文本仍恢复为默认值。

我知道我可以将用户锁定在一个方向上,但是我宁愿让该应用程序在任何一个方向上都可以使用。

或者,有没有一种方法可以确定用户以哪个方向打开应用程序并将其锁定在该方向上,直到他们重新启动应用程序?

编辑:

谢谢卡比尔,

android:configChanges="orientation|screenSize"

工作完美

2 个答案:

答案 0 :(得分:0)

对于API 12及以下版本:

android:configChanges="orientation"

如果您定位的是API 13或更高版本

android:configChanges="orientation|screenSize"

答案 1 :(得分:0)

实际上,方向改变是通过销毁和重新创建活动来进行的。一些视图能够保存其状态,另一些则不能。 TextView不会保存其状态(在这种情况下为文本),因为它倾向于显示静态文本。如果要在配置更改期间保存TextView的状态,可以执行以下操作:

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    /*
    1st argument is key, 2nd is value to save
    */
    outState.putString("savedText", myTextView.getText().toString());
}

@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
    super.onRestoreInstanceState(savedInstanceState);
    /*
    The argument is key to get saved string
    */
    myTextView.setText(savedInstanceState.getString("savedText"));
}

这些onSaveInstanceState()onRestoreInstanceState()Activiy的方法。