2012-09-01 51 views
0

當方向改變時,我需要改變我的Android(4.1 API 16)應用程序的佈局。onConfigurationChanged問題

@Override 
    public void onConfigurationChanged(Configuration newConfig) { 
     super.onConfigurationChanged(newConfig); 
     setContentView(R.layout.main_2); 
     System.out.println("Orientation changed!"); 
    } 

而且我已經加入下一行到清單文件

android:configChanges="orientation" 

我使用Ctrl + F11來改變方向。我的屏幕旋轉但佈局保持不變,LogCat中沒有打印任何內容。感覺像onConfigChanged事件不會發生。

我的錯誤在哪裏?

謝謝。

+0

在你從哪裏把Android清單:configChanges = 「定位」? –

+0

<活動 機器人:configChanges =「方向」 – Dmitry

+0

在該活動中,你必須重寫methos **公共無效onConfigurationChanged(配置NEWCONFIG)** –

回答

4

嘗試使用android:configChanges="orientation|keyboardHidden|screenSize"

注意:與Android 3.2(API級13)中, 「畫面尺寸」 開始也改變時在縱向和橫向取向 之間的設備切換。因此,如果要在開發API級別13或更高級別(由minSdkVersion和targetSdkVersion屬性聲明的 )時爲 方向更改而阻止運行時重新啓動,則 除「方向」外還必須包含「screenSize」值爲 。也就是說,你必須decalare android:configChanges =「orientation | screenSize」。但是,如果您的 應用程序的目標級別爲12或更低,則您的活動始終會自行處理此配置更改(即使在更高版本的Android 3.2或更高版本的設備上運行此配置更改 也不會重新啓動您的活動)。

來源:Documentation

因此,還加"|screenSize" to configChanges如果你的應用程序面向API 13以上。

+0

我都試過,但結果是一樣的 – Dmitry

+0

檢查編輯我的回答如果你的目標是API 13+。 – Swayam

+0

非常感謝!現在它工作了! – Dmitry

1

比方說你的縱向佈局文件是在佈局/ my_layout.xml

將您想要的佈局在橫向模式使用相同的佈局文件名中使用的佈局土地文件夾。即佈局,土地/ my_layout.xml

不要添加機器人:configChanges =「方向」的清單開展此項活動。

您不需要明確更改佈局。您需要重寫onConfigurationChanged(配置NEWCONFIG)功能

0

試試這個....

android:configChanges="orientation|keyboardHidden|screenSize" 
相關問題