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