EditText专注于android

时间:2012-07-16 11:28:54

标签: android android-edittext

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


                }
            });

我做错了什么?帮助我。

3 个答案:

答案 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()