【发布时间】:2013-03-26 15:22:55
【问题描述】:
每当设备从纵向旋转到横向时,我都想do_something()。
我在清单中添加了<activity android:configChanges="orientation" >。因此,每当我旋转我的设备时,都会调用onConfigurationChanged()。而且它不会重新创建 Activity。
在我的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() 函数中,我将删除这些片段,因为它们在横向中不需要模式。)
【问题讨论】:
标签: android android-fragments android-manifest screen-orientation onconfigurationchanged