在我的应用程序中单击EditText
时,我必须执行一些逻辑。我有代码。但它没有进入click
方法。
我的代码:
EditText des=(EditText)findViewById(R.id.desinc);
des.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View v)
{
java.lang.System.out.println("Inside click");
EditText income=(EditText)findViewById(R.id.editText1);
// TODO Auto-generated method stub
String inc=income.getText().toString();
int indexOFdec = inc.indexOf(".");
java.lang.System.out.println("index="+indexOFdec);
if(indexOFdec==0)
{
java.lang.System.out.println("inside index");
income.setText(inc+".00");
}
}
});
我做错了什么?帮助我。
答案 0 :(得分:3)
尝试通过以与onClickListener相同的方式设置onTouchListener来覆盖onTouch。使用此代码作为参考。
EditText dateEdit = (EditText) findViewById(R.id.date);
date.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_UP) {
//anything you want to do if user touches/ taps on the edittext box
}
return false;
}
});
更新(为什么会出现这种情况): 第一个单击事件聚焦控件,而第二个单击事件实际上触发OnClickListener。如果使用android:focusableInTouchMode View属性禁用触摸模式焦点,则OnClickListener应按预期触发。
您也可以尝试这样:为xml中的EditText框设置android:focusableInTouchMode =“false”。看看它是否适用于现有代码。
答案 1 :(得分:2)
您应该使用OnFocusChangeListener()
答案 2 :(得分:0)
尝试点击EditText
两次,因为在第一个实例EditText获取focus
,然后执行EditText的click
事件。因此,如果您希望在第一次点击时执行代码,请使用EditText
编写代码,以便将焦点更改为OnFocusChangeListener()
。