2017-03-06 126 views
0

我有一個Android應用程序,其中包含一個Activity和一個具有多個片段的自定義ViewPager。我的整個活動被鎖定在肖像中,但現在我需要在特定片段內檢測設備處於橫向狀態並啓動另一個鎖定在橫向上的活動。在這項新的活動中,當用戶將設備放在肖像中時,我會關閉它並返回肖像活動。 這是AndroidManifest.xml中的代碼:Android:檢測屏幕方向更改,如果方向鎖定

<activity 
     android:name="com.mypackage.MainActivity" 
     android:configChanges="orientation" 
     android:label="@string/app_name" 
     android:launchMode="singleTask" 
     android:screenOrientation="portrait" 
     android:theme="@style/Theme.AppCompat.Light" > 
    </activity> 

,這裏面的代碼片段應該檢測的景觀:

public void onConfigurationChanged(Configuration myConfig) { 
    int orient = getResources().getConfiguration().orientation; 
    switch (orient) { 
    case Configuration.ORIENTATION_LANDSCAPE: 
     //Launch new activity 
     break; 
    }  
} 

現在,我已經注意到,onConfigurationChanges從不叫這個清單的配置,但只有當我刪除

android:screenOrientation="portrait" 

有一種方法來保持MainActivity鎖定縱向和攔截景觀嗎?

回答

0

現在我已經注意到,onConfigurationChanges()不會被調用

爲什麼會是這樣surpring給你?您明確禁用了方向更改,因此沒有必要調用此方法。請注意,方向指代屏幕方向,而不是設備的方向。

當設備處於景觀和推出鎖定爲橫向

另一個活動

你要麼吃的蛋糕或保持蛋糕讓你無論是強制固定的方向或有onConfigurationChanges()調用。

推出的另一項活動鎖定

爲什麼不簡單地有相同的活動分開的佈局文件?交換機將被框架自動處理,所以不需要特殊的代碼 - 只是文件中的正確命名的文件夾(見文檔:https://developer.android.com/guide/topics/resources/providing-resources.html

+0

,因爲我有一個ViewPager我的活動,旨在爲只在畫像裏面工作,因爲我需要僅當用戶在特定片段上時才切換肖像 – giozh

+0

那麼看起來你得到的東西設計不正確,因爲這種ViewPager只能用於肖像。但它不應該意識到方向,因爲它不應該是它的任務 –