0

複数のテーブル行に複数の編集テキストがあります。findViewById を介してそれらにアクセスできることを知っています。findViewById を使用する代わりに、onFocusChange でどの edittext にフォーカスがあるかを調べる方法はありますか?

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));
  }
}
4

4 に答える 4

1
getWindow().getCurrentFocus();

もちろん、この後何か賢いことをする必要があります - フォーカスが EditText であると仮定して、try/catch だけでも十分かもしれません。

于 2013-04-12T11:51:05.440 に答える
1

ユーザーがある EditText から別の EditText に切り替えるonFocusChange()と、2 回呼び出されます。1 回目はフォーカスを失ったビュー用で、2 回目は現在フォーカスのあるビュー用です。(編集:これらのイベントが到着する順序があったように聞こえますが、たとえそうであったとしても、それは保証されておらず、それに依存してはなりません。)

したがって、hasFocus == trueブランチでは、単に を調べView vて、それが であるかどうかを確認しinstanceof EditText、そこに View オブジェクトがあるかどうかを確認します。

于 2013-04-12T12:01:30.557 に答える
0

View v パラメータが EditText のインスタンスと等しいかどうかを確認します。

if(hasFocus && v == et1) {
   ...
}
于 2013-04-12T12:08:40.193 に答える