2012-10-25 159 views
1

我有一個小計時器應用程序和EditText小部件,名爲etH,etMetS,它們允許輸入並顯示時間滴答。當點擊開始按鈕,啓動計時器,我做禁止的交互以下幾點:setFocusable on button click

btnS.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
    if (calculateMS() != 0) { 
     OnTimerStartButtonClicked(); 
     initiateTimer(); 
     DisableEditTexts(); 
        ... 

的方法:

public void DisableEditTexts() { 
    etH.setFocusable(false); 
    etM.setFocusable(false); 
    etS.setFocusable(false); 
} 

按RESET按鈕,我想重新啓用通過調用執行相反的事情方法交互(可調焦設置爲true):

btnR.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     OnTimerResetButtonClicked(); 
     clearValues(); 
     EnableEditTexts(); 
     ... 

的問題:edittexts不會成爲通過點擊復位按鈕可獲得焦點。我正在做的最後一種方法是

etH.setFocusable(true); 
etM.setFocusable(true); 
etS.setFocusable(true); 

我做錯了什麼?

回答

3

嘗試調用EditText#setFocusableInTouchMode()代替:

etH.setFocusableInTouchMode(true); 
// etc. 

當你調用setFocusable(false),在幕後,setFocusableInTouchMode(false)叫你。但是,當您撥打setFocusable(true)時,幕後無其他事情發生,請將setFocusableInTouchMode()作爲false

當您撥打setFocusableInTouchMode(true)時,會發生類似的情況,您會調用setFocusable(true)。和以前一樣setFocusableInTouchMode(false),不叫setFocuable(false)

source code處看到一個高峯,看到這個怪癖。

+0

問題解決了,謝謝! – Droidman

+0

解決了我的問題 - 謝謝山姆! – bernhardrusch

0

您是否嘗試過調試以確保EnableEditTexts()實際上在您按下重置按鈕時被調用?

0

嘗試_myEditText.clearFocus()失去焦點和_myEditText.requestFocus()來恢復它