让用户更改默认方向

时间:2013-02-18 05:12:30

标签: android android-layout actionbarsherlock android-preferences android-orientation

我想允许用户更改允许Android以纵向或横向显示的选项。我所做的是允许用户设置首选项,然后强制它在程序上。

此时,我在onCreate内使用了这样的代码:

prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (prefs.getBoolean("landscapeModeEnabled", false)) {
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
else { 
    setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
}

super.onCreate(savedInstanceState);

现在的问题是,如果屏幕未处于“强制”方向,会创建两次活动。也就是说,如果用户想要横向显示,默认(纵向)方向的手机将加载屏幕两次。

我知道我可以使用XML设置它,但这不允许用户更改方向的首选项。

我正在使用 Action Bar Sherlock 中的SherlockFragmentActivity,如果这很重要的话。

1 个答案:

答案 0 :(得分:1)

有2个这样的活动:

  

mActivityLand

     

mActivityPort

Manifest中的方向不同。

检查上一个活动中的偏好设置并启动相应的Activity。可能不是最好的解决方案:(