Mainak
Mainak

Reputation: 93

Edittext Focus and click

I have Two EditTexts. I want On First EditTexts click clear the second and on second edittext click clear the first one. So I have tried OnClickListener and OnTouchListener. But it is not working properly.

 et_email.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (!(et_email.getText().toString().equalsIgnoreCase("") && et_mobile.getText().toString().equalsIgnoreCase(""))) {
                    if (MotionEvent.ACTION_UP == event.getAction()) {
                        et_mobile.setText("");
                        et_mobile.setFocusableInTouchMode(true);
                        et_mobile.setFocusable(true);
                        et_mobile.requestFocus();
                    }
                    return true; // return is important...
                } else
                    return false;
            }
        });
        et_mobile.setOnTouchListener(new View.OnTouchListener() {
            @Override
            public boolean onTouch(View v, MotionEvent event) {
                if (!(et_email.getText().toString().equalsIgnoreCase("") && et_mobile.getText().toString().equalsIgnoreCase(""))) {
                    if (MotionEvent.ACTION_UP == event.getAction()) {
                        et_email.setText("");
                        et_mobile.setFocusableInTouchMode(true);
                        et_mobile.setFocusable(true);
                        et_mobile.requestFocus();
                    }
                    return true; // return is important...
                }
                else
                    return false;
            }
        });

But the problem is Focus is not setting on first touch and while clicking and unable to clear EditText.

Upvotes: 0

Views: 5457

Answers (3)

Wael Ouni
Wael Ouni

Reputation: 117

I hope this code helps you (it works for me)

    edit1 = (EditText) findViewById(R.id.edit1);
    edit2 = (EditText) findViewById(R.id.edit2);



    edit1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            edit2.setText("");
        }
    });

    edit2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
        @Override
        public void onFocusChange(View v, boolean hasFocus) {
            edit1.setText("");
        }
    });

Upvotes: 0

inkedTechie
inkedTechie

Reputation: 684

you are clearing the first one one touching the first one, change your variable names in first listener like this

if (!(et_email.getText().toString().equalsIgnoreCase("") && et_mobile.getText().toString().equalsIgnoreCase(""))) {
    if (MotionEvent.ACTION_UP == event.getAction()) {
        et_mobile.setText("");
        et_email.setFocusableInTouchMode(true);
        et_email.setFocusable(true);
        et_email.requestFocus();
    }
    return true; // return is important...
} else

Upvotes: 0

Strider
Strider

Reputation: 4490

First add this to your Edittext layouts:

android:focusableInTouchMode="false" 

Without this line, the EditText will react to touch-mode, and only listen to your onClick() the second time you click your EditText bar. This will disable touch-mode for EditText, and fire onClick() in first time

focusableInTouchMode

Note: boolean that controls whether a view can take focus while in touch mode. If this is true for a view, that view can gain focus when clicked on, and can keep focus if another view is clicked on that doesn't have this attribute set to true.

than do as follows: EditText1

EditText et_email = (EditText) findViewById(R.id.yourEditText1);
et_email.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //do this
        et_mobile.setText("");

        //or this
        et_mobile.getText().clear();         
    }
});

EditText2

EditText et_mobile = (EditText) findViewById(R.id.yourEditText2);
et_mobile.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        //do this
        et_email.setText("");

        //or this
        et_email.getText().clear();         
    }
});

This should help u out.

Upvotes: 1

Related Questions