У меня есть поле выбора и редактирование текста в представлении. Если вы выполните longClick на customNumberPicker. Он скроет customNumberPicker и отобразит Edittext (то же самое делается для редактирования текста). Он работает нормально.
Но хотелось бы еще, чтобы клавиатура была открыта при переходе в режим редактирования текста.
Вот мой код
final NumberPicker numberPicker = (NumberPicker) dialog.findViewById(R.id.npWeight);
final EditText editText = (EditText) dialog.findViewById(R.id.edWeight);
numberPicker.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
if (numberPicker.getVisibility() == View.VISIBLE) {
editText.setVisibility(View.VISIBLE);
numberPicker.setVisibility(View.GONE);
editText.setFocusableInTouchMode(true);
editText.requestFocus();
showKeyboard(MyApplication.mainActivity);
}
return true;
}
});
editText.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
editText.setVisibility(View.GONE);
numberPicker.setVisibility(View.VISIBLE);
// hideKeyboard(MyApplication.mainActivity);
return true;
}
});
private static void showKeyboard(Activity activity) {
View view = activity.getCurrentFocus();
InputMethodManager methodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
assert methodManager != null && view != null;
methodManager.showSoftInput(view, InputMethodManager.SHOW_IMPLICIT);
}




Попробуйте показать клавиатуру с параметрами ниже:
InputMethodManager inputMethodManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.toggleSoftInputFromWindow(view.getApplicationWindowToken(),InputMethodManager.SHOW_FORCED, 0);
или
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE);
Для фрагмента попробуйте код ниже:
public void showKeybarod(){
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
if (getActivity() != null && !getActivity().isFinishing() && getUserVisibleHint()) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);
}
}
},300);
}
Я пробовал оба, они не работают в моем случае. Просто как информация. Я использую фрагмент.
Отредактированный ответ для фрагмента. пожалуйста, проверьте
тот же результат, что и предыдущий.
я не уверен, есть ли разрешение или что-то в этом роде, потому что я использовал тот же метод в другом проекте, и он работал.
Похоже, есть проблема из-за setOnLongClickListener. Я попробовал прослушиватель нажатия кнопки, он открывает клавиатуру.
он работает в режиме клика. Я просто тестирую. Спасибо . Я проверю, что не так с длинным кликом
Возможный дубликат Как показать программную клавиатуру, когда текст редактирования сфокусирован