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
时,Activity 仍未重新启动。(就像不打电话一样。)
当我通过时ActivityInfo.SCREEN_ORIENTATION_NOSENSOR
,方向传感器关闭。(正如它所说。)
当我通过时,ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE
活动被强制关闭。AndroidRuntime:NullPointerException
(具体一点:这是因为在纵向布局中以编程方式添加了片段,但在横向布局中没有。在do_something()
函数中,我将删除这些片段,因为它们在横向模式中不需要。)