在片段上,我有以下OnKeyListener。如果它当前显示,我用它隐藏该片段的内部视图。如果没有显示,我就不会使用按键和Android。
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && (event.getAction() == KeyEvent.ACTION_DOWN)) {
if (isSomeViewShowing) {
hideSomeView();
return true;
}
// Back pressed but view is not showing. Not consuming the event.
return false;
}
// Back not pressed. Not consuming the event.
return false;
}
});
当视图不存在时,它可以隐藏视图并进入正常的Fragment / Activity backstack,但如果用户使用软键盘在EditText中输入文本然后隐藏键盘,它就会停止工作。 / p>
我知道OnKeyListener不适用于软键盘,这对我的需求是可行的。我只需要在输入完成并且隐藏键盘后继续工作。
有没有办法阻止这种情况发生?
解决方法是listen for when keyboard is dismissed并在解除键盘时再次添加OnKeyListener,但实现这一点会为简单任务增加太多复杂性。
答案 0 :(得分:2)
您可以覆盖使用onBackPressed()
的{{1}}中的activity
,并向fragment
发送消息,以便知道按下了按键。像这样:
<强>活动:强>
fragment
<强>片段:强>
/**
* Triggered when the user press back button
*/
@Override
public void onBackPressed(){
mYourFragment.onBackPressed();
}