2013-08-06 103 views
0

當我們從函數onConfigurationChanged調用setRequestedOrientation那麼在onConfigurationChanged之後永遠不會被調用嗎?Android'onConfigurationChanged'事件沒有被觸發

正如我讀過的地方,當我們從活動調用setRequestedOrientation功能,然後函數onConfigurationChanged永遠不會被調用。

我現在死在街頭,沒辦法。

我有我的活動,我只需要在肖像模式下顯示,但是當用戶在視頻視圖中播放視頻,然後在用戶將方向改爲風景之後,我需要在風景中製作活動+視頻。

問題是,當我調用setRequestedOrientation方法將應用程序方向設置爲縱向時,方法onConfigurationChanged永遠不會被調用。

而當我刪除電話setRequestedOrientation然後當視頻沒有運行我和當用戶改變方向時,我的活動也改變了我無法控制的方向。

+0

我認爲這是真的,來處理這個問題。首先將其包含到'AndroidManifest' - >'android:configChanges =「keyboardHidden | orientation」'中。在這裏看看 - > http://developer.android.com/reference/android/app/Activity.html#onConfigurationChanged(android.content.res.Configuration) – g00dy

+0

是的,我已經在清單文件中添加了這一行。 – User7723337

回答

0

setRequestedOrientation調用是強制您的活動保持在給定方向,因此您可以將其鎖定爲縱向。這就是爲什麼onConfigurationChanged沒有被調用。

如果要旋轉應用程序,則可以爲每個方向指定不同的佈局XML文件,或者獲取應用程序的方向並以編程方式處理。

在這裏看到:http://developer.android.com/reference/android/app/Activity.html#setRequestedOrientation(int)

在這裏:http://developer.android.com/reference/android/content/res/Configuration.html#orientation

+0

我已經嘗試了上面提到的方法來獲取設備方向,但是當我們使用「setRequestedOrientation」設置設備方向時,所有這些函數每次都會返回相同的值。所以在我們調用「setRequestedOrientation」方法後,有沒有獲取設備的方向。我無法找到這個。 – User7723337

+0

使用setRequestedOrientation會將應用程序鎖定到該方向並且不允許它旋轉。如果您希望應用旋轉,請不要調用setRequestedOrientation。 –

+0

有兩件事我想歸檔,應用程序是固定的方向,當沒有視頻正在運行,所以調用'setRequestedOrientation'但第二件事時,視頻正在運行我想知道當前的方向(我根本無法得到) ,如果設備在風景中,那麼我想要將活動的方向改爲風景。 – User7723337

1

做它重新獲得由傳感器設備的方向。

setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_SENSOR);