When MyFgment appear in screen, I want to set cursor focus on EditText in MyFragment automatically. I've tried EditText.requestFocus(), but it doesn't focus on EditText. How can I do??
            Asked
            
        
        
            Active
            
        
            Viewed 7,185 times
        
    8
            
            
         
    
    
        hanjiman
        
- 465
- 1
- 6
- 17
- 
                    Use Edittext edittext = view.findViewById(R.id.your_id); then if(!edittext.getfocus()) edittext.requestFocus()/ edittext.setFocus(true); – Ranjeet Chouhan Mar 13 '20 at 05:53
4 Answers
13
            editText.requestFocus() will put focus to your View if it is focusable . But I guess you want to show keyboard when it is focused. If I am right then the following code might work for you.
editText.requestFocus();
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);
The code is from this post. You can also check Android Developers for details.
 
    
    
        Naung9
        
- 209
- 1
- 8
- 
                    Neither requestFocus() not setFocusable working for me at all. – Kalpana Aneyrao Apr 09 '21 at 07:31
5
            
            
        set this in your xml
android:focusable="true"
android:focusableInTouchMode="true"
and you can set this on onViewCreated program editText.isFocusableInTouchMode();
editText.setFocusable(true);
 
    
    
        Amit pandey
        
- 1,149
- 1
- 4
- 15
1
            
            
        Add these lines from class,
EditText.isFocusableInTouchMode();
EditText.setFocusable(true); 
EditText.requestFocus(); 
or add these attributes in layout,
android:focusable="true"
android:focusableInTouchMode="true"
 
    
    
        Rashiq
        
- 650
- 1
- 9
- 23
0
            
            
        Add this kotlin extension function
fun EditText.focus() {
    text?.let { setSelection(it.length) }
    postDelayed({
        requestFocus()
        val imm = context.getSystemService(Activity.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.showSoftInput(this, InputMethodManager.SHOW_IMPLICIT)
    }, 200)
}
and call it on your EditText in onViewCreated.
 
    
    
        yaugenka
        
- 2,602
- 2
- 22
- 41