Android onKeyPreIme不调用
我有一个自定义视图继承了Android onKeyPreIme不调用,android,android-layout,android-custom-view,keypress,android-event,Android,Android Layout,Android Custom View,Keypress,Android Event,我有一个自定义视图继承了线性布局,该视图位于视图切换器中。我想在按下Back键时返回到上一个视图,因此我覆盖了此视图中的onPreKeyIme,但当我按下Back键时,它似乎没有进入方法,并且活动处理Back 我错过了什么 @Override public boolean onKeyPreIme(int keyCode, KeyEvent event) { if(keyCode == KeyEvent.KEYCODE_BACK) return viewModel.back
线性布局
,该视图位于视图切换器中。我想在按下Back键时返回到上一个视图,因此我覆盖了此视图中的onPreKeyIme
,但当我按下Back键时,它似乎没有进入方法,并且活动处理Back
我错过了什么
@Override
public boolean onKeyPreIme(int keyCode, KeyEvent event) {
if(keyCode == KeyEvent.KEYCODE_BACK)
return viewModel.backClicked();
return super.onKeyPreIme(keyCode, event);
}
我在if语句中有一个断点,它永远不会冻结在那里
另外,我不允许使用片段。尝试重写dispatchKeyEvent
方法。这样做:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){
Log.d("Test","Back Pressed");
return viewModel.backClicked();
}
return super.dispatchKeyEvent(event);
}
尝试重写dispatchKeyEvent
方法。这样做:
@Override
public boolean dispatchKeyEvent(KeyEvent event) {
if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){
Log.d("Test","Back Pressed");
return viewModel.backClicked();
}
return super.dispatchKeyEvent(event);
}
为什么不使用onBackPressed
回调而不是onKeyPreIme
?@VasylGlodan我需要在视图级别捕获它。啊哈,我明白了。您是否想过在自定义视图中创建一些公共方法来更改视图结构/外观等,并在onBackPressed中调用此视图之外的方法?类似于:public void onBackPressed(){view.handleBack();}
如果没有其他方法的话。这是一个巨大而独特的项目,我只是在处理其中的一小部分。@VasylGlodan,是的,这段代码已经实现了。:)为什么不使用onBackPressed
回调而不是onKeyPreIme
?@VasylGlodan我需要在视图级别捕获它。啊哈,我明白了。您是否想过在自定义视图中创建一些公共方法来更改视图结构/外观等,并在onBackPressed中调用此视图之外的方法?类似于:public void onBackPressed(){view.handleBack();}
如果没有其他方法的话。这是一个巨大而独特的项目,我只是在处理其中的一小部分。@VasylGlodan,是的,这段代码已经实现了。:)我使用“dispatchKeyEventPreIme”。谢谢你的回答。我会在一天内奖励赏金的。谢谢。很高兴我能帮到你:)我使用“dispatchKeyEventPreIme”。谢谢你的回答。我会在一天内奖励赏金的。谢谢。很高兴我能帮助你:)