我在我的一个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版本之间存在某种向后兼容性。
提前感谢,
答案 0 :(得分:1)
您可能在活动的清单文件中为android:configChanges
声明了orientation
,says您将自己处理方向更改,因此onCreate
方法不被称为。