处理方向变化时的问题
我需要处理Android应用程序中的方向更改。为此目的,我决定使用OrientationEventListener
便利课。但他的回调方法有一些奇怪的行为。处理方向变化时的问题
我的应用程序开始在人像模式,然后最终切换到lanscape之一。我有一些自定义代码在回调onOrientationChanged
方法中执行,它提供了一些额外的UI处理逻辑 - 它有几个调用findViewById
。 奇怪的是,当从横向切换回肖像模式onOrientationChanged
回调被称为两次,甚至更糟 - 第二个电话正在处理不好Context
- findViewById
方法开始返回null
。这些电话是从MainThread
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
listener = new OrientationListener();
}
@Override
protected void onResume() {
super.onResume();
// enabling listening
listener.enable();
}
@Override
protected void onPause() {
super.onPause();
// disabling listening
listener.disable();
}
权利而作出我复制与虚拟Activity
相同的行为,而不只是一个带有定向hadling涉及任何逻辑。 我按按Ctrl + F11 出了什么问题发起朝向切换从Android 2.2模拟器?
UPD: 内部类实现OrientationEventListener
private class OrientationListener extends OrientationEventListener {
public OrientationL() {
super(getBaseContext());
}
@Override
public void onOrientationChanged(int orientation) {
toString();
}
}
}
这是仅在模拟器中记录的错误。真正的设备不会表现出这种双生命周期事件行为。我前段时间遇到了同样的问题,并且它在真实设备上消失。
,我建议只检测一个方向取向的变化,直到你得到你的手物理的手机上,如果你能忽略的问题。否则,您可以通过保留一个静态布尔值来指示您已经通过第一组生命周期调用来“跳过”第二组生命周期调用。
更多信息,请参见this issue report。
相比对摩托罗拉XOOM一些麻烦是更好的解决方案的onCreate调用两次连续过 http://*.com/posts/3922257 – RzR 2012-01-05 11:06:16
您是否尝试过使用onConfigurationChanged?
@Override
public void onConfigurationChanged(Configuration newConfig) {
if(newConfig.equals(Configuration.ORIENTATION_LANDSCAPE)…
添加安卓清单文件configChanges =“方向”在活动标签一样
<activity android:label="@string/app_name" android:configChanges="orientation" android:name=".com.androidpeople">
请发表您的onOrientationChanged代码太 – 2010-06-07 08:58:02
你有一个真正的手机上测试时试过这种?我遇到了一些方向变化的问题,只有在模拟器上测试时才会发生。它与模拟器假定屏幕方向改变有关 - 我也有一个问题,它重新创建应用程序两次。 – 2010-06-07 10:56:00
可惜的是我没有获得真正的手机现在 – nixau 2010-06-07 11:07:00