2012-09-24 31 views
2

我有一個應用程序,使用onConfigurationChanged(Configuration cfg)。我也設置了android:configChanges="orientation|keyboardHidden"。所以onConfigChanged()方法被調用,因爲我有layout-landlayout-port目錄與佈局兩個方向,我有一段代碼看起來像這樣:Android在setContentView應用設置

@Override 
public void onConfigurationChanged(Configuration cfg) { 
    super.onConfigurationChanged(cfg); 
    setContentView(R.layout.activity_main); 
    controller.applySettingsToButtons(); 
} 

(activity_main是佈局的肖像版本相同,但需要重新設置,否則該應用程序將在橫向模式下的人像版本,我顯然不希望)

我想要什麼

我想,當我旋轉顯示屏,有應用程序指示切換到layout-land文件,切換後,對按鈕和內容應用一些(動態)設置。

會發生什麼

新的景觀內容查看設置,但對於按鈕設置不適用,儘管applySettingsToButtons()方法跑去。

思考

首先我想mabybe了的setContentView在另一個線程中運行,造成applySettingsToButtons()排名榜首。但是當我把它們放在一個新的線程中運行時,就會發生與之前一樣的事情。

問題

如何申請設置按鈕和設置其他(或相同的)內容查看後的東西?

+0

您是否嘗試過使用調試器並逐步執行代碼?你確定onconfigurationchanged被調用嗎?如果是,也許你需要使佈局無效。 – Warpzit

+0

yes調用onConfigurationChanged()。虐待嘗試thevalide() – stealthjong

回答

1

configurationChange中通過(setcontentview)再次設置XML後,初始化按鈕。這應該工作。

+0

這確實有效,太糟糕了,這對我的表現非常不好,因爲我需要做controller = new Controller(this),並且控制器初始化所有Button和控件。而這大約200.但它必須做。 – stealthjong

+0

@ChristiaandeJong但是您必須記住,您的引用是舊活動/片段中的舊視圖,並且在配置更改後它們無效。 – Warpzit

+0

由於這是公認的答案,請查看我的編輯是否正確,並根據需要進行調整。 –