无法解决方法' getWindow()'

时间:2017-04-20 04:10:59

标签: android

以下代码行中的getWindow()方法

  

this.getWindow()setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

导致以下错误

  

无法解决方法' getWindow()'

错误的代码行位于此方法的底部

private void setButtonListener(Button button){
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String textString = editText.getText().toString();
            textView.setText(textString);
            editText.getText().clear();


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

            this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
        }
    });
}

我希望我的editText在键盘关闭时失去焦点。

我参加了一个活动课,所以我不确定问题是什么。 this是否有getWindow()方法?

5 个答案:

答案 0 :(得分:1)

你可以像这样关闭软键盘

private void setButtonListener(Button button){
    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            String textString = editText.getText().toString();
            textView.setText(textString);
            editText.getText().clear();


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

        }
    });
}

如果您想切换

InputMethodManager im =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
im.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0);

答案 1 :(得分:1)

您可以使用OnFocusChangeListener隐藏软键盘并失去焦点

EditText editText = (EditText) findViewById(R.id.textbox);
OnFocusChangeListener ofcListener = new MyFocusChangeListener();
editText.setOnFocusChangeListener(ofcListener);


private class MyFocusChangeListener implements OnFocusChangeListener {

    public void onFocusChange(View v, boolean hasFocus){

        if(v.getId() == R.id.textbox && !hasFocus) {

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

        }
    }
}

答案 2 :(得分:0)

找到解决方案

活动:

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

在片段中:

getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

答案 3 :(得分:0)

尝试此解决方案 - >只需之前添加类名称。

MainActivity.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

答案 4 :(得分:0)

而不是this.getWindow()使用YourActivity.this.getWindow()

试试这个:

YourActivity.this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);