2012-04-24 116 views
0

不同的行爲,我有一個活動:Android的屏幕方向變化對平板電腦

android:screenOrientation="portrait" 

和代碼:

在活動
if(blah blah blah) 
    this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE) 

的onCreate。 1.當在智能手機上測試「setRequestedOrientation」導致銷燬活動,並再次創建所需的屏幕方向。 2.在平板設備上測試時,此代碼只運行一次活動。在「setRequestedOrientation」之後,它繼續而不破壞並再次創建活動。在onCreate中啓動代碼而沒有debuger或沒有斷點時會發生這種情況。如果我停在onCreate函數中 - 我在日誌中看到 - 摧毀並再次創建onCreate。 如何捕捉平板電腦的具體情況?

更新: - 如果關閉了「方向鎖定」,則發生平板電腦問題。如果啓用「方向鎖定」,則程序將以與智能手機中相同的方式工作。

UPDATE2: - 是否有可能爲整個應用程序設置優先屏幕方向。所以當活動開始瞭解所需的方向時。這會使unScale調用「setScreenOrientation」,並避免創建第二個活動。

回答

0

沒有..你不能爲整個應用程序參訪屏幕方向......相反,你應要求在各只setScreenOrientation活動比較... Refere this link here...

0

您可以設置

<activity ActivityName = "test_activity" 
android:configChanges="orientation"> 
</activity> 
在你的Android清單文件

。它不會允許活動重新啓動方向更改,但配置更改將被正常調用。 稍後,您可以在onconfigurationchange中getdisplayorientation並設置任何你想要的。

+0

謝謝。我知道這種方式。谷歌強烈建議不要這樣做。 – Kostadin 2012-04-24 12:10:22

1

這個問題我做了以下修改花了整整一天後,在我的應用程序中: 1.每個activity/without first /被聲明爲android:screenOrientation =「behind」。 2.在第一個活動中,我使用用戶選擇的模式/從我的菜單中設置首選的屏幕方向。 3.我只在用戶更改我的菜單選項中的模式時才調用setRequestedOrientation。

這會導致只創建一次活動。最後:)