我有一个名为etH
,etM
和etS
的小型计时器应用和EditText小部件,它们允许输入并显示时间滴答声。单击开始按钮并启动计时器时,我通过执行以下操作禁止交互:
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);
}
通过按下重置按钮,我想通过调用方法重新启用交互,反之亦然(将focusable设置为true):
btnR.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
OnTimerResetButtonClicked();
clearValues();
EnableEditTexts();
...
问题:单击重置按钮后,edittexts无法变焦。我在最后一个方法中所做的就是
etH.setFocusable(true);
etM.setFocusable(true);
etS.setFocusable(true);
我做错了什么?
答案 0 :(得分: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取一个高峰,看看这个怪癖。
答案 1 :(得分:0)
您是否尝试过调试以确保按下重置按钮时实际调用了EnableEditTexts()?
答案 2 :(得分:0)
尝试使用_myEditText.clearFocus()失去焦点,然后使用_myEditText.requestFocus()重新获得它