Android:当方向改变时,如何forbird重新创建Activity?

时间:2013-07-16 12:52:32

标签: android android-activity android-orientation

我有一个带有Frgment的Android活动。当我的应用程序启动时,listview加载了10个从服务器发送的元素。 (简单要求)。

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

如何禁止重新创建活动?

我已经设置了标志:

android:configChanges="orientation|keyboardHidden|screenSize" 

onConfigurationChanged:

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

3 个答案:

答案 0 :(得分:0)

然后你要覆盖

@Override
public void onConfigurationChanged(Configuration newConfig)
{
}

在你的活动中,你想要在方向/ keyboardHidden / screenSize上做什么。

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

答案 1 :(得分:0)

您需要覆盖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");
}

希望这有帮助

答案 2 :(得分:0)

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