按下主页键后键盘没有隐藏。

3
我使用以下代码来显示键盘
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
        InputMethodManager.HIDE_IMPLICIT_ONLY);

我使用以下代码隐藏键盘 getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

用于隐藏键盘,同时

也尝试了这个方法

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

按下主页键后,应用程序关闭但键盘仍然保持在屏幕上。

请指导我,我做错了什么?

我已经放置了隐藏代码。 我在 onDestroy(), onBackPressed()onOptionsItemSelected(MenuItem item) 中都放了隐藏代码。抱歉我的代码格式不好。

protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.mylayout);

    textTv=(EditText)findViewById(R.id.textview1);
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,
    InputMethodManager.HIDE_IMPLICIT_ONLY);

    if(getIntent().getExtras()!=null)
    {
        Bundle extra=getIntent().getExtras();
        if(extra!=null)
        {
            // code
        }
    }
}

public void onBackPressed() {
    // TODO Auto-generated method stub
    InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(noteTv.getWindowToken(), 0);
    }

public boolean onOptionsItemSelected(MenuItem item) {
    // TODO Auto-generated method stub

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

    switch (item.getItemId()) {
    case R.id.menu1:
    //code
    break;
    case R.id.menu2:
    //code
    break;

}


你已经使用了所有可能的情况,每一个都可以工作。如果它对你没有起作用,那么可能是你代码中存在问题,请向我们展示你隐藏键盘的代码。 - Pragnani
我已经将显示代码放在了 onCreate() 方法中,隐藏代码放在了 onBackPressed() 中,而且运行正常。但是当我按下带有显示键盘的home键时,它并没有被隐藏。@Pragnani - Pankaj Kharche
抱歉,我没听懂你的意思。我已经发布了答案,请检查一下。 - Pragnani
我已经尝试过了,但是没有起作用。我在调用隐藏代码的地方放置了一些代码。@Pragnani - Pankaj Kharche
谢谢告诉我如何格式化。好的。那么我应该把键盘隐藏代码放在哪里?@Pragnani - Pankaj Kharche
显示剩余6条评论
1个回答

8

尝试

@Override
protected void onPause() {
    final InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(noteTv.getWindowToken(), 0);
    super.onPause();
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接