0

在我的应用程序中,当我单击 时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");
                    }


                }
            });

我究竟做错了什么?帮我。

4

3 回答 3

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"。看看它是否适用于现有代码。

于 2012-07-16T11:32:37.463 回答
2

你应该使用OnFocusChangeListener()

于 2012-07-16T11:35:06.763 回答
0

尝试单击EditText两次,因为在第一个实例 EditText 获取focus之后 EditText 的click事件执行。因此,如果您希望代码在第一次单击时执行,请编写代码以更改EditTextusing的焦点OnFocusChangeListener()

于 2012-07-16T11:34:02.343 回答