按钮单击时隐藏键盘(片段)

F_X*_*F_X 2 keyboard android

当按钮点击时,我有错误实现隐藏键盘,任何人都知道如何解决这个问题?实际上是getSystemService和getWindowsToken中的代码错误

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.fragment_calculator, container, false);

        Button hitung = (Button) rootView.findViewById(R.id.hitung);
        final EditText height = (EditText)rootView.findViewById(R.id.height);
        final EditText weight = (EditText)rootView.findViewById(R.id.weight);

        InputMethodManager imm = InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(EditText.getWindowToken(), 0);

        final TextView result = (TextView)rootView.findViewById(R.id.result);
        final TextView finalresult = (TextView)rootView.findViewById(R.id.finalresult);
        finalresult.setMovementMethod(new ScrollingMovementMethod());

        hitung.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
            ..........
}
Run Code Online (Sandbox Code Playgroud)

Sat*_*shi 6

你正在使用Fragment这样的写作getActivity().getSystemService(Context.INPUT_METHOD_SERVICE)

原因相同:

一个Activity扩展了Context,一个Fragment没有.因此,您首先需要获得包含片段的Activity的引用

编辑

对于您可以使用的评论中提到的其他错误

getView().getWindowToken()

应该在你的button's onClick()方法中调用hide方法

imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);


Tej*_*jas 6

用这个,

 public static void hideKeyboard(Context mContext) {
    InputMethodManager imm = (InputMethodManager) mContext
            .getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(((Activity) mContext).getWindow()
            .getCurrentFocus().getWindowToken(), 0);
}
Run Code Online (Sandbox Code Playgroud)