1

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

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

    return state;
  }

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

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 操作系统版本之间存在某种向后兼容性。

提前致谢,

4

1 回答 1

1

您可能在清单文件中为活动android:configChanges声明了一个 for ,它表示您将自己处理方向更改,因此不会调用该方法。orientationonCreate

于 2012-04-11T12:03:29.183 回答