2016-06-28 31 views
2

我知道有兩種方法來設置Activity的方向爲橫向,通過編程設置方位固定的所有活動

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

或在清單:

android:orientation="landscape" 

目前,我使用這是超類中的第一個,因爲我有很多(孩子)活動,我都希望始終處於風景中。但是,這會使 onCreate被調用兩次,這會導致其他問題。在使用Manifest-Route時,我必須將它分別應用於所有活動,這無疑會導致未來錯過某個活動(更不要說所有的代碼複製)。

有沒有辦法將android:orientation="landscape"應用於我的應用中的所有活動?

+0

是的,你可以通過在清單中添加。 – Nitesh

+0

看看這裏http://stackoverflow.com/questions/6582761/how-can-i-set-orientation-fixed-for-all-activities – johnrao07

+0

@ johnrao07這就是它現在的工作方式(通過使用超類);這會導致'onCreate'被調用兩次。 –

回答

1

在清單中,爲所有的活動設置此:

<activity android:name=".YourActivity" 
android:configChanges="orientation" 
android:screenOrientation="portrait"/> 

讓我解釋一下:

與Android:configChanges =「方向」你告訴的Android,你會負責的變化方向。 android:screenOrientation =「portrait」你設置了默認的方向模式。

+0

我明白,但是這樣我必須爲每個活動單獨執行,我不想這樣做,因爲我最終會忘記一個活動。 –

+0

你必須在每個活動中添加這個到目前爲止android不提供任何這樣的功能.. – Nitesh

0

OnCreate 將在創建活動時調用。當你設置代碼

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 

活動重新創建自己,所以你不能真正停止。 (也許你可以嘗試一下,當你得到一個解決方案嘗試張貼..)

你必須處理你的東西,這樣

可能的解決方案

機器人:configChanges =「keyboardHidden |定位|屏幕尺寸」 在manifiest在標籤

OR

直接添加在你的清單取向性

+0

閱讀問題。這是我發佈的。我正在尋找一種方法來將這個論點立即應用於清單中的所有活動。 –

0

或者你可以嘗試做的所有活動「父」和「超」延伸。

public abstract class SuperActivity extends AppCompatActivity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE); 
+0

閱讀問題。這是我現在擁有的。 –