2013-10-31 27 views
0

我被一個問題困住了。我有一個自定義按鈕的應用程序,它可以根據連接更改它的繪製。用程序化狀態刷新UI

我有一個設置選項,當更改時需要重新繪製視圖並根據連接狀態設置drawable。

我已經在我的Activity中實現了onSharedPreferenceChange,並在那裏使用setContentView重新載入相應的UI。

之後,我根據我的連接狀態設置可繪製按鈕。像這樣的東西。

String dexterity = prefs.getString(
      getString(R.string.landscape_orientation_key), "Right"); 
    if (dexterity.equals("Left")) { 
     setContentView(R.layout.activity_main_left); 
    } else { 
     setContentView(R.layout.activity_main); 
    } 
      updateButtonDrawable(myClass.getCurrentButtonDrawable()) 

UI成功重繪爲默認狀態,該狀態沒有作爲按鈕的src的可繪製集。我調用來更新可繪製按鈕的方法雖然沒有效果。所述方法已被證明並在整個應用程序中使用,所以我確信代碼能夠正常工作,並且我已經檢查過正試圖設置當前狀態。

我認爲這可能是我的調用updateButtonDrawable時setContentView還沒有完成。我嘗試在onResume()中放置UI更新,但那也不起作用。

有什麼建議嗎?

+0

你可以顯示'updateButtonDrawable'代碼 –

+0

這是很多代碼...但足以說它從我的服務中獲取當前按鈕狀態(在調試中正確設置),並基於它設置按鈕drawable使用button.setImageDrawable – Stephen

+0

'setImageDrawable'?什麼是「按鈕」? –

回答

1

因爲您剛纔更改了contentView,所以您需要在updateButtonDrawable之內執行findViewById。如果你不這樣做,那麼你正在更新錯誤的ImageButton參考..