如何在切换活动/选项卡时关闭安卓键盘

3

我创建了一个方法来检查键盘是否在带有editText: searchfield的活动(tab)中使用。每当我离开这个活动(tab)并切换到另一个活动时,我想关闭键盘。因此,我在onStop()中调用该方法。但是什么也没发生,为什么它不起作用呢?有没有更多关于Android中onStop()如何工作的见解?我该怎么让它起作用? /非常感谢!

@Override
protected void onStop()
{
    super.onStop();
    this.hideKeyboard();  <----------------------
    if(this.data != null)
    {
        this.data.destroy();
    }
}

private void hideKeyboard()
{
    if (this.searchField != null)
    {
        InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(this.searchField.getWindowToken(), 0);
    }
}

2
你试过使用 onPause() 而不是 onStop() 吗? - Floern
尝试在您的主要Activity中使用TabHost.OnTabChangeListener(),并从那里调用您的hideKeyboard()方法。http://developer.android.com/reference/android/widget/TabHost.OnTabChangeListener.html - Squonk
onPause解决了问题,非常感谢大家!/ 快乐 :) - Jesper Martensson
请注意,Dialog(例如)的出现将导致当前的Activity被暂停,即onPause()将被调用。如果您的代码设计不会受到这种情况的影响,那么就没问题了 - 不过,您的问题确实指定了更改选项卡,因此在这种情况下,使用onTabChangeListener方法是正确的方法。 - Squonk
2个回答

5

通常情况下,除非您明确要这样做,否则切换到新的Activity时不会结束当前Activity。因此,建议您将操作放在onPause()中而不是onDestroy()中。


4

来自评论

当您切换选项卡时,onStop()不会被调用。请改用onPause()


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