Intereting Posts
SharedPreferences из разных видов деятельности ViewStub вызывает ошибку при одновременном раздувании более чем одного макета Изменение цвета маркеров – Google Map V2 Android Java.lang.InstantiationException: невозможно создать экземпляр класса: нет пустого конструктора Кордова build: Пожалуйста, установите цель Android: «android-22». Я не хочу андроида-22. Я хочу андроид-19 – что мне делать? Android: Что такое текстовый текст по умолчанию для EditText? «ResultIndex равен -1, многоугольник должен быть недействительным!» Adter addView () Android Studio с сервисами Google Play Выберите подмножество символов во многих строках (выбор столбцов) в Eclipse / Android Studio Тест-драйв для андроидов – getinstrumentation (), возвращающий null GCMRegistrar.getRegistrationId (this) всегда возвращает пустую строку, даже после успешного вызова для регистрации Как зашифровать файл в .net и расшифровать в android Местонахождение легенды Achartengine События Android MediaRouter Volume SetGravity для GridLayout не работает

SoftKeyboard не отображается для вновь отображаемого фрагмента

У меня есть FragmentActivity, который изначально отображает фрагмент с несколькими кнопками на нем. Когда вы нажимаете одну из кнопок, FragmentActivity отображает новый фрагмент с некоторыми полями editText. Кажется, я не могу отобразить клавиатуру мягкого ввода, когда будет отображаться мой новый фрагмент с полями editText.

Использование режима windowSoftInput в манифесте отключается, так как сразу отображает клавиатуру.

android:windowSoftInputMode="stateUnchanged" 

Я попытался использовать

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)

но безрезультатно. Вот как я показываю новый фрагмент из своей Activity:

 public void clickHandler(View view) { switch (view.getId()) { case R.id.login: loginFragment = new LoginFragment(); FragmentTransaction transaction = getSupportFragmentManager() .beginTransaction(); transaction.replace(R.id.fragment_container, loginFragment); transaction.addToBackStack(null); transaction.commit(); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); break; 

Я также попытался вызвать setSoftInputMode изнутри встроенного фрагмента, и это не сработало. Думаю, что это была проблема синхронизации, я попробовал ее с handler.postDelayed, и это тоже не сработало. Это выглядело так:

 onResume... Handler handler = new Handler(); Runnable runnable = new Runnable() { @Override public void run() { getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } }; handler.postDelayed(runnable, 1000); 

Любая помощь будет оценена по достоинству. Благодарю.

Solutions Collecting From Web of "SoftKeyboard не отображается для вновь отображаемого фрагмента"

В вашем onResume вы можете сделать это:

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

У меня была очень похожая проблема. Фрагмент A вызывает фрагмент B, где фрагмент B (макет с TABS) имеет в нем EditText. Клавиатура не появлялась бы в этом окне EditText, если бы я не нажал на что-то еще.

Я попробовал решение здесь и во многих других решениях stackoverflow. МНОГИЕ. Единственный, кто работал для меня, заключался в том, чтобы сфокусироваться на EditText, когда щелкнул EditText. В OnFocusChangeListener я смог заставить клавиатуру открывать и закрывать.

Эта проблема возникла только для меня на устройствах Android 2.34, а не 2.2 или 3.0. У эмулятора тоже не было проблем. В манифесте была настроена только настройка.

Итак, вот решение, которое сработало для меня (надеюсь, кто-то найдет это полезным):

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