私は2つのアクティビティABを持っており、ユーザーは電話を縦向きから横向きに回転させることでそれらを切り替えることができます
OnConfigurationChangedをオーバーライドして、次のような新しいアクティビティを開始します。
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_USER || newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE || newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_REVERSE_LANDSCAPE)
{
final TabGroupActivity tabGroupActivity = (TabGroupActivity) this.getParent();
final Intent arIntent = new Intent(tabGroupActivity, ARActivity.class);
tabGroupActivity.startActivity(arIntent);
}
}
最初は問題なく動作しますが、2回目、3回目は問題ありません。2回に1回は動作します。
失敗するたびに、アクティビティAが横向きに回転し、オーバーライドされたOnConfigurationChangedが呼び出されないことに気付きました。
助言がありますか ?
これがアクティビティBのConfigurationChangedのコードです
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
Log.i(TAG,"onConfigurationChanged orientation : " + newConfig.orientation);
if (!mProgressDialog.isShowing() && (newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_PORTRAIT|| newConfig.orientation==ActivityInfo.SCREEN_ORIENTATION_REVERSE_PORTRAIT))
{
mOrientationTimer.cancel();
this.finish();
}
}