Androidアプリケーションで向きの変更を処理する必要があります。この目的のために、私はOrientationEventListener
コンビニエンスクラスを使用することにしました。しかし、彼のコールバックメソッドにはやや奇妙な振る舞いがあります。
私のアプリケーションはポートレートモードで起動し、最終的にはlanscapeモードに切り替わります。onOrientationChanged
いくつかの追加のUI処理ロジックを提供するコールバックメソッドで実行されているカスタムコードがあります-にいくつかの呼び出しがありfindViewById
ます。奇妙なことに、ランドスケープモードからポートレートモードに切り替えるとonOrientationChanged
、コールバックが2回呼び出され、さらに悪いことに、2番目の呼び出しは不良を処理しています。 メソッドはを返し始めます。これらの呼び出しは、MainThreadから直接行われます。Context
findViewById
null
@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
オリエンテーションハドリングを処理するものを除いて、ロジックなしでダミーを使用して同じ動作を複製しました。Ctrl + F11を押して、Android 2.2エミュレーターから向きの切り替えを開始し
ます。何が問題になっている可能性がありますか?
Upd:実装する内部クラスOrientationEventListener
private class OrientationListener extends OrientationEventListener {
public OrientationL() {
super(getBaseContext());
}
@Override
public void onOrientationChanged(int orientation) {
toString();
}
}
}