2017-09-01 121 views
1

我試圖在Android設備旋轉時啓動新的活動,但我甚至沒有在模擬器中檢測到旋轉。Android設備旋轉時未檢測到

我已閱讀Android: listen for Orientation change?的線程,這似乎是amke感,但它只是不工作。

在我的表現,我有:

<activity 
     android:name=".MainActivity" 
     android:configChanges="orientation|screenSize" 
     android:screenOrientation="portrait" 
     android:windowSoftInputMode="stateHidden"> 
     <intent-filter> 
      <action android:name="android.intent.action.MAIN" /> 

      <category android:name="android.intent.category.LAUNCHER" /> 
     </intent-filter> 
    </activity> 

,在我mainActivity.java我:

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

    int orientation=newConfig.orientation; 

    switch(orientation) { 

     case Configuration.ORIENTATION_LANDSCAPE: 

      showMessage("landscape"); 
      break; 

     case Configuration.ORIENTATION_PORTRAIT: 

      showMessage("portrait"); 
      break; 

    } 
} 

這顯然不會啓動新的活動,但我試圖讓方位檢測首先工作(showMessage只是稱爲吐司,並在我的代碼中的其他地方工作,所以這不是爲什麼我什麼都看不到)。

當我運行這在模擬器中使用的旋轉按鈕,模擬器預期旋轉,但我從來沒有看到敬酒......

我要去哪裏錯了? (我正按照配置常量的要求導入android.content.res.Configuration)。

回答

0

onConfigurationChanged方法將不會被調用,當你旋轉你的設備,其實,什麼也不會,因爲這行調用:

android:screenOrientation="portrait" 

設備只是鎖定在縱向模式下,刪除此行,和onConfigurationChanged方法應該被調用。

如果你想檢測到設備是旋轉並保持android:screenOrientation="portrait"線,你可以使用加速度傳感器。後

+0

啊..我確實想知道,但是如果我刪除它,Android會在第一個Activity啓動第二個Activity之前旋轉第一個Activity? –

+0

@FatMonk它會同時發生,第一個活動將被旋轉,第二個活動將在同一時間啓動。 –

0

嘗試,因爲你是在鎖定屏幕上體現的方向和你 也覆蓋在活動的配置變更而移除該行

android:configChanges="orientation|screenSize" 
     android:screenOrientation="portrait"