我在多个表格中有多个edittexts。 我知道我可以通过findViewById访问它们。 有没有办法找到onFocusChange,哪个edittext有焦点,而不是使用findViewById?
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
int edit1 = 0, edit2 = 0, result = 0;
if(hasFocus == true)
{
}
else {
edit1 = Integer.parseInt(et1.getText().toString());
result = Integer.parseInt(et3.getText().toString());
edit2 = result - edit1;
et2.setText(Integer.toString(edit2));
et3.setText(Integer.toString(edit2));
}
}
答案 0 :(得分:1)
getWindow().getCurrentFocus();
当然,在此之后你需要做一些聪明的事情 - 即使只是一个try / catch,假设焦点是一个EditText就足够了。
答案 1 :(得分:1)
当用户从一个EditText切换到另一个EditText时,onFocusChange()
将被调用两次;一次用于丢失焦点的视图,第二次用于现在拥有它的视图。 (编辑:这听起来像是有一个订单,这些事件到达,但即使是这样,它不保证,你不能依赖它。)
因此,在hasFocus == true
分支中,您只需检查View v
,看看它是否为instanceof
EditText
,并且您有View对象。
答案 2 :(得分:0)
检查View v参数是否等于EditText的实例。
if(hasFocus && v == et1) {
...
}
答案 3 :(得分:0)
您可以在每个edittext视图中设置标签()并在每个视图中设置焦点侦听器。如果您不想使用findViewById()找到它,那么您可以通过编程方式从父视图中检索视图并为其分配标记和设置单击侦听器