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