我有SearchActivity
可以使用,但我希望能够通过按回来关闭它。如果我现在这样做,首先键盘消失(这是我想要的),但如果我再次按它,我会破坏片段。相反,我想关闭搜索。因为我在一个片段中,我无法设法onBackPressed()
。
当前代码:
@Override
public void onBackPressed() {
// Only close if the Fragment reference is null.
if(Ships == null)
{
super.onBackPressed();
}
else
{
Ships.onBackPressed();
}
}
答案 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}}