私の Android アプリケーションには、onConfigurationChanged() メソッドをオーバーライドするメイン アクティビティ「MyActivity」があります。そのメソッド内で、向きの変更を確認し、横向きに変更された場合は別のアクティビティを呼び出します。
@Override
public void onConfigurationChanged(Configuration newConfig)
{
if(newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE)
{
super.onConfigurationChanged(newConfig);
startActivity(new Intent(this, BaseFullScreenActivity.class));
}
}
次に、モバイルを横向きに変更すると、他のアクティビティ クラス「BaseFullScreenActivity」が呼び出され、正常に動作します。その呼び出されたアクティビティ内で、 onConfigurationChanged() メソッドを再度オーバーライドして、この子アクティビティを再び終了します。
@Override
public void onConfigurationChanged(Configuration newConfig)
{
if(newConfig.orientation == Configuration.ORIENTATION_PORTRAIT)
{
super.onConfigurationChanged(newConfig);
finish();
}
}
ただし、この 2 回目の向きの変更 (縦向きに戻る) で、子のアクティビティが終了し、メインのアクティビティが再び表示されるはずですが、アプリがクラッシュし、次のエラーが表示されます。
android.app.SuperNotCalledException:
Activity MyActivity did not call through to super.onConfigurationChanged()
両方のアクティビティで onStop() メソッドをオーバーライドし、super.onStop() を呼び出しましたが、役に立ちませんでした。
他のアイデアはありますか?
よろしくお願いします。