Android:屏幕方向更改时未调用onRetainNonConfigurationInstance

时间:2012-04-11 11:13:11

标签: android android-layout screen-orientation android-sdk-2.3 nexus-s

我在我的一个Activity上实现了onRetainNonConfigurationInstance()来处理android屏幕方向。这是代码:

  @Override
  public Object onRetainNonConfigurationInstance() {
    Log.d("[DEBUG]", "onRetainNonConfigurationInstance : "
        + this.getClass().getName());
    MyState state = new MyState();

    return state;
  }

然后我在Android设备上安装了该应用程序。这是配置:

Device : Samsung Nexus S
Android version : 4.0.4
Kernel version : 3.0.8-g6656123android-build@vpbs1 #1

当我通过更改屏幕方向调试手机上的应用时,我的 onRetainNonConfigurationInstance()方法不会被调用。

即使很奇怪,我在Activity的 onCreate()方法中添加了一个日志行。根据文档,Android应该在屏幕方向发生时重新创建活动。所以我有以下内容:

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylist);
    Log.d(Constants.LOG_TAG, "Oncreate : " + this.getClass().getName());
}

但是,当我在设备上更改屏幕方向时, onCreate()方法不会被称为

你是否已经遇到过这个问题?

在文档中,他们还说这个方法已被弃用,而我应该使用与Fragments等相关的东西。这可能是我没有调用方法的原因吗?

实际上,我实施2.3.3到3.0 设备,但我的测试设备是4.0.4 :这可能是问题吗?我认为Android OS版本之间存在某种向后兼容性。

提前感谢,

1 个答案:

答案 0 :(得分:1)

您可能在活动的清单文件中为android:configChanges声明了orientationsays您将自己处理方向更改,因此onCreate方法不被称为。