2

我想让用户更改允许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进行设置,但这不会允许用户更改方向的首选项。

我使用SherlockFragmentActivityAction Bar Sherlock,如果有问题。

回答

1

有2个活动是这样的:

mActivityLand

mActivityPort

与在Manifest不同的方向。

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

+0

这听起来像它会工作,但我宁愿去与不需要双倍的活动:) – Muz 2013-02-18 05:56:20

+0

Eww。你想要这个属性的所有活动?如果你的活动方向不固定,那么用户可以按他喜欢的方式使用你的应用程序(土地/港口)。你甚至不需要给他一个偏好选项。如果您可以照顾不同方向的布局。 – 2013-02-18 06:03:07