安卓:当方向改变时,如何禁止重新创建活动



我有一个带Frment的Android活动。当我的应用程序启动时,会加载一个列表视图,其中包含从服务器发送的10个元素。(简单请求)。

当我更改设备的方向时,活动会被重新创建,我还会看到带有加载列表视图请求的微调器。

如何禁止重新创建活动?

我已经设置了标志:

android:configChanges="orientation|keyboardHidden|screenSize" 

配置更改时:

public void onConfigurationChanged(Configuration newConfig) {
   super.onConfigurationChanged(newConfig);
   mDrawerToggle.onConfigurationChanged(newConfig);
}

然后您想要覆盖

@Override
public void onConfigurationChanged(Configuration newConfig)
{
}

在你的活动中,用你想在方向/键盘隐藏/屏幕大小上做什么。

在清单中设置标志告诉应用程序您想自己处理这些配置更改。

当方向更改时,您需要覆盖onSaveInstanceState(Bundle savedInstanceState)并保持所需所有值的状态。

@Override
public void onSaveInstanceState(Bundle savedInstanceState) {
  super.onSaveInstanceState(savedInstanceState);
  // This bundle will be passed to onCreate if the process is
  // killed and restarted.
  savedInstanceState.putString("jsonArrayString", jsonArrayStrin);
  // etc.
}

此值将传递给onCreate和/或onRestoreInstanceState。您可以使用以下方法检索:

@Override
public void onRestoreInstanceState(Bundle savedInstanceState) {
  super.onRestoreInstanceState(savedInstanceState);
  // This bundle has also been passed to onCreate.
  String myArrayString = savedInstanceState.getString("jsonArrayString");
}

希望这能帮助

如果不需要更改方向,也可以在清单中阻止它。只需在activity元素中指定属性:android:screenOrientation

最新更新