SoftKeyboard does not display for a newly displayed Fragment

前端 未结 2 1815
野性不改
野性不改 2020-12-19 00:37

I have a FragmentActivity that initially displays a fragment with a few buttons on it. When you click one of the buttons, the FragmentActivity displays a new fragment with s

相关标签:
2条回答
  • 2020-12-19 00:55

    I had a very similar issue. Fragment A calls fragment B where fragment B (Layout with TABS) has EditText in it. The keyboard would not come up for this EditText box unless I clicked on something else.

    I tried the solution here, and on many other stackoverflow solutions. MANY. The only one that worked for me was to clear focus on the EditText when the EditText was clicked. In OnFocusChangeListener I was able to force the keyboard open and closed.

    This issue only occurred for me on Android 2.34 devices and not 2.2, or 3.0. Emulator had no issues as well. Manifest only had adjustResize in it.

    So here's a solution that worked for me(hopefully someone else finds this useful):

    In onCreateView(...)

        //
        //Inflate Your Layout Here
        //
    
        //set on focus to force keyboard
        editText.setOnFocusChangeListener(new OnFocusChangeListener()
        {
            @Override
            public void onFocusChange(View v, boolean hasFocus) 
            {
                Log.d(TAG,"On Foucs. Has Focus = " + hasFocus);
    
                if (hasFocus)
                {
                     //open keyboard
                    ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).showSoftInput(v,
                            InputMethodManager.SHOW_FORCED);
                }
                else
                { 
                    //close keyboard
                    ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).hideSoftInputFromWindow(
                            v.getWindowToken(), 0);
                }                               
            }
        });
    
        //Set on click listener to clear focus
        editText.setOnClickListener(new OnClickListener()
        {
            @Override
            public void onClick(View clickedView) 
            {                           
                clickedView.clearFocus();
                clickedView.requestFocus();                             
            }       
        });    
    
    0 讨论(0)
  • 2020-12-19 00:59

    On your onResume you can do this:

    EditText someEditText = (EditText)getActivity().findViewById(R.id.someEditText);
    someEditText.requestFocus(); 
    InputMethodManager mgr =      (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    mgr.showSoftInput(someEditText, InputMethodManager.SHOW_IMPLICIT);
    
    0 讨论(0)
提交回复
热议问题