do_something()デバイスが縦向きから横向きに回転するときはいつでもしたいです。
<activity android:configChanges="orientation" >マニフェストに追加しました。そのonConfigurationChanged()ため、デバイスを回転させるたびに呼び出されます。また、アクティビティは再作成されません。
私のonConfigurationChanged()職務では:
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) {
do_something();
}
then_fire_off_the_screen_rotation_as_normal();
// which means re-start the Activity
// i expect it will fire off onSaveInstanceState() -> onPause() -> onStop() -> onDestroy() -> onCreate() -> onStart() -> onRestoreInstanceState() -> onResume()
}
私の問題は、私はで何ができるかわからないということですthen_fire_off_the_screen_rotation_as_normal()。
私は使ってみsetRequestedOrientation()ましたが、それはこの目的を果たす機能ではないようです:
ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED、、、ActivityInfo.SCREEN_ORIENTATION_SENSORまたはを渡してActivityInfo.SCREEN_ORIENTATION_USERも、アクティビティはまだ再開されません。(電話しないように。)
通過するActivityInfo.SCREEN_ORIENTATION_NOSENSORと、方向センサーがオフになりました。(それが言ったように。)
を渡すとActivityInfo.SCREEN_ORIENTATION_LANDSCAPE、アクティビティはで強制終了しましAndroidRuntime:NullPointerExceptionた。
(具体的には、ポートレートレイアウトにはプログラムで追加されたフラグメントがありますが、ランドスケープレイアウトdo_something()にはないためです。関数では、ランドスケープモードでは必要ないため、これらのフラグメントを削除します。)