按Back键关闭片段中的SearchAction

时间:2017-04-22 20:34:55

标签: android fragment

我有SearchActivity可以使用,但我希望能够通过按回来关闭它。如果我现在这样做,首先键盘消失(这是我想要的),但如果我再次按它,​​我会破坏片段。相反,我想关闭搜索。因为我在一个片段中,我无法设法onBackPressed()

当前代码:

@Override
    public void onBackPressed() {
        // Only close if the Fragment reference is null.
        if(Ships == null)
        {
            super.onBackPressed();
        }
        else
        {
            Ships.onBackPressed();
        }
    }

2 个答案:

答案 0 :(得分:1)

如果您确实需要,可以保留Fragment的引用并通知onBackPressed()发生的片段。虽然这会给你想要的结果,但它并不是最佳的。

Activity

@Override
public void onBackPressed()
{
    // Only close if the Fragment reference is null.
    if(mFragment == null)
    {
        super.onBackPressed();
    }
    else
    {
        mFragment.onBackPressed();
    }
}

Fragment

MyFragment extends Fragment
{
     public void onBackPressed()
     {
         // Execute here.
     }
}

答案 1 :(得分:0)

覆盖 @Override public void onBackPressed() { final boolean isKeyboardOpen = ...; if (isKeyboardOpen) { super.onBackPressed(); } else if (searchView.hasFocus()) { searchView.clearFocus(); } else super.onBackPressed(); }

  1. If keyboard is open - 让系统处理回按事件
  2. 如果{{1}}目前正在关注 - 那么明确焦点
  3. 否则让系统处理后退事件。

    {{1}}