在片段启动时显示edittext的键盘

当我的片段开始时,我想让我的edittext处于焦点/让用户开始input它。 我可以通过requestFocus()获得焦点,但是我不能让键盘显示出来。

我已经试过这两个:

edit = (EditText) view.findViewById(R.id.search); edit.requestFocus(); InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imgr.showSoftInput(edit, 0); 

 edit = (EditText) view.findViewById(R.id.search); InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imgr.showSoftInput(edit, 0); edit.requestFocus(); 

如何让键盘显示EditText?

这是否工作?

 imgr.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY); 

你可以试试这个

 @Override public void onResume() { super.onResume(); edit.post(new Runnable() { @Override public void run() { edit.requestFocus(); InputMethodManager imgr = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE); imgr.showSoftInput(edit, InputMethodManager.SHOW_IMPLICIT); } }); } 

由于使用showSoftInput不适用于所有情况,并尝试了一些在这里提到的解决scheme,如:

 if (binding.account.requestFocus()) { getActivity().getWindow() .setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } 

我终于使用它的工作

 if (binding.account.requestFocus()) { ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput( InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY ); } 

以来:

  binding.account.requestFocus() 

只请求EditText的焦点(不打开键盘)

 ((InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput( InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY ); 

是唯一的解决scheme,似乎正常工作,以显示键盘(和投票最多的一个)

祝你好运! 🙂

正如Nilzor所说的那样

 imgr.showSoftInput(getView(), InputMethodManager.SHOW_IMPLICIT) 

我同意这是一个比google.com软件最好的解决scheme

另一种在片段开始时打开键盘的方法是调用onCreateView requestFocus() ,并且当且仅当EditText是可EditText时才打开键盘。

 if(this.editText.requestFocus()) { getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE); } 
  @Override public void onHiddenChanged (boolean hidden) { super.onHiddenChanged(hidden); if(hidden) { hideKeyboard(yourView); } else { toggleKeyboard(yourView); } } public static void toggleKeyboard(View v) { InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); v.requestFocus(); imm.toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_NOT_ALWAYS); } public static void hideKeyboard(View v) { InputMethodManager imm = (InputMethodManager) v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } 

简单地说,使用添加2行就像一个魅力:

如果使用XML

 android:focusable="true" android:focusableInTouchMode="true" 

其他在Java:

 view.setFocusableInTouchMode(true); view.requestFocus(); 

这篇文章帮助了我

 @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_edit_name, container); editText = (EditText) view.findViewById(R.id.txt_yourName); editText.requestFocus(); getDialog().getWindow().setSoftInputMode( LayoutParams.SOFT_INPUT_STATE_VISIBLE); return view; } 

https://turbomanage.wordpress.com/2012/05/02/show-soft-keyboard-automatically-when-edittext-receives-focus/