Search code examples
androidandroid-edittext

How can I detect focused EditText in android?


I have a number of EditText elements in my page along with two buttons. I want the user to touch on any one EditText field and click any button to insert a certain value into that very EditText field they touched. Giving input using the keypad is not allowed. Please help me to do this.


Solution

  • One thing that you can do is declare a global variable evalue which will tell you which is the last selected EditText by using onTouchListener and then based on the value of evalue, you can set the text value to the edittext by button click. hope you understood.

    the code for it can be as follow:

    EditText e1,e2;
        Button b1,b2;
        String evalue;
        /** Called when the activity is first created. */
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
            e1=(EditText)findViewById(R.id.editText1);
            e2=(EditText)findViewById(R.id.editText2);
            b1=(Button)findViewById(R.id.button1);
            b2=(Button)findViewById(R.id.button2);
    
            e1.setOnTouchListener(new View.OnTouchListener()
            {
                public boolean onTouch(View arg0, MotionEvent arg1)
                {
                    evalue="1";
                    return false;
                }
            });
    
            e2.setOnTouchListener(new View.OnTouchListener()
            {
                public boolean onTouch(View arg0, MotionEvent arg1)
                {
                    evalue="2";
                    return false;
                }
            });
            b1.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View arg0) {
                    if(evalue=="1")
                    {
                        e1.setText("yes");
                    }
                    if(evalue=="2")
                    {
                        e2.setText("yes");
                    }
                }
            });
    
    
            b2.setOnClickListener(new View.OnClickListener()
            {
                public void onClick(View arg0) {
                    if(evalue=="1")
                    {
                        e1.setText("No");
                    }
                    if(evalue=="2")
                    {
                        e2.setText("No");
                    }
                }
            });
    
        }
    

    Its a logical coding.. not upto the mark.. if you find a better one. then use it. thank you.