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

UPDATE(この動作の理由):最初のクリックイベントはコントロールに焦点を合わせ、2番目のクリックイベントは実際に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イベントが実行されるため、2回クリックしてみてください。EditTextしたがって、最初のクリックでコードを実行する場合は、を使用してフォーカスを変更するためのコードを記述しますOnFocusChangeListener()

于 2012-07-16T11:34:02.343 に答える