java - 键盘未显示用于编辑文本

标签 java android

我有一个选择框并在 View 中编辑文本。如果您在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);

对于 fragment ,请尝试以下代码:

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

关于java - 键盘未显示用于编辑文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55162534/

相关文章:

java - MongoDB 池超时

java - Archive TransferManagerBuilder 无法通过区域提供商链找到区域

java - JButton 操作不在 JTable 内部执行

java - 安卓java.lang.RuntimeException : Unable to resume activity

java - 将图像插入数据库

java - 将应用程序从 Eclipse 移植到 Android Studio 时出错

java - 为什么我的 ButtonClickListerner 不工作?

android - 调用 Web 服务时 Android 应用程序中的 OutOfMemoryError

java - 使用 builder.setView() 设置 AlertDialog 宽度以适合固定大小 imageview 的大小

android - 在 JNI 中将位图转换为 Opencv::Mat