2011-10-18 48 views
1

我已經嘗試使用下面的鏈接中提到的代碼來「批量禁用」按鈕,它工作得很好。但是,相同的代碼不適用於批量啓用。Android:批量啓用已禁用的按鈕

Android: mass enable/disable buttons

代碼禁止(工作)

TableLayout tl = (TableLayout)findViewById(R.id.table1); // 
ArrayList<View> touchables = tl.getTouchables(); 
for(View touchable : touchables){ 
if(touchable instanceof Button && touchable != btnNewWord) 
((Button)touchable).setEnabled(false); 
} 

CODE爲Enable(不工作)

btnNewWord.setOnClickListener(new View.OnClickListener() { 

public void onClick(View v) { 

TableLayout tl = (TableLayout)findViewById(R.id.table1); 
ArrayList<View> touchables = tl.getTouchables(); 
for(View touchable : touchables){ 
if(touchable != btnNewWord) 
((Button)touchable).setEnabled(true); 
}      
+0

你得到任何錯誤或這樣的嗎?嘗試記錄你的ArrayList來檢查它是否包含值,一旦你禁用按鈕,並嘗試再次獲取ArrayList? – Hiral

回答

2

一旦您設置的按鈕禁用,我認爲,他們將不再是可觸摸的。所以你需要在你的代碼中修改這個點,並使用其他的東西來獲得所有的視圖。您可以保留您用來禁用按鈕的ArrayList,然後使用它們重新啓用它們。

編輯:

試試這個:

ArrayList<View> touchables //declare globaly 

然後

TableLayout tl = (TableLayout)findViewById(R.id.table1); // 
touchables = tl.getTouchables(); 
for(View touchable : touchables) 
{ 
    if(touchable instanceof Button && touchable != btnNewWord) 
     ((Button)touchable).setEnabled(false); 
} 

現在,

btnNewWord.setOnClickListener(new View.OnClickListener() { 

    public void onClick(View v) { 

     for(View touchable : touchables) 
     { 
      if(touchable != btnNewWord) 
      ((Button)touchable).setEnabled(true); 
     } 
    } 
}      
+0

其實我停用一切,除了一個按鈕,它仍處於啓用狀態,即btnNewWord:(!可觸摸的instanceof按鈕&&可觸摸= btnNewWord) 如果 我希望用戶點擊特定的按鈕,重新啓用所有按鈕。 –

+0

這意味着,你有btnNewWord是控制所有其他按鈕的殘疾的按鈕。那麼您需要像ArrayList 一樣保存所有按鈕(當它們被啓用時),然後您必須使用相同的ArrayList 來重新啓用btnNewWord的onClick()中的按鈕。 – Hiral

+0

請檢查edit.Hope它有幫助。 – Hiral