1

我有一個應用程序,我通過在清單中的每個活動設置的Android屏幕方向變化導致應用退出

android:screenOrientation="portrait" 

設置僅僅在肖像模式顯示。這工作正常,當我旋轉手機時,我的應用程序屏幕不旋轉。

的問題是,如果我開始在縱向方向的手機應用程序,那麼作爲我的第一個活動運行(動畫閃屏)和我在旋轉手機景觀,而第一個活動仍在運行,下一次活動啓動(它從第一個活動的線程的finally塊啓動),該應用程序將退出。它不強制退出,它只是退出到主屏幕。 LogCat中沒有拋出異常或其他任何內容,可以說明發生這種情況的原因。屏幕從不旋轉(因爲它不應該)。如果我使用Landscape中的手機啓動應用程序,它可以正常工作。這隻發生在我以肖像開始並旋轉到風景之後。

我試圖把

android:configChanges="orientation" 

在每一個活動,我也試着

android:configChanges="orientation|keyboard|keyboardHidden|screenLayout" 

我想有和沒有在活動實施onConfigurationChanged以上。當我實現它時,我簡單地忽略它(只是調用super.onConfigurationChanged)。

我自己也嘗試編程設置活動爲縱向除了在清單中設置它。

我也能得到這個在原來的摩托羅拉Droid發生第一步是用物理鍵盤打開的應用並開始在汽車碼頭的應用。應用程序啓動後,啓動屏幕以縱向方向啓動(即使鍵盤已打開或手機處於汽車停靠位置),但只要第二個活動啓動,應用程序就會退出。

我不認爲這有什麼做的活動上改變方向時被破壞。我所有的全局數據都存儲在我的應用程序的自定義應用程序類中,正如我前面提到的,在全局變得消失的情況下,我不會遇到任何異常,例如空指針。

我在Android 2.3.2上運行Verizon上的摩托羅拉Droid原版。

+0

是y你說當你強迫肖像時,活動仍然會旋轉到風景? –

回答

0

我會建議您在閃屏或下一個活動中以編程方式設置方向。 嘗試執行此代碼:

//get the WindowManager Service 
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay(); 
//get the orientation 
int orientation = display.getOrientation(); 
//orientation % 2 == 0 is portrait mode, 
if ((orientation % 2) != 0) (android.view.IWindowManager.Stub.asInterface(ServiceManager.getService("window"))).setOrientation(0); 

我希望這會起作用。

0

應用程序關閉與方向的變化,因爲你必須在res文件夾

  • 例如特定資源提供:佈局土地 在res文件夾 或

處理的變化以編程方式運行

@Override 
public void onConfigurationChanged(Configuration newConfig) { 
    super.onConfigurationChanged(newConfig); 

    // Checks the orientation of the screen 
    if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE) { 
     Toast.makeText(this, "landscape", Toast.LENGTH_SHORT).show(); 
    } else if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT){ 
     Toast.makeText(this, "portrait", Toast.LENGTH_SHORT).show(); 
    } 
}