由于没有窗口焦点,onBackPressed()ovveriding出现问题



我有一个活动(ActvityMain.java(,它包含一个片段(HomeFragment.java(;从这个片段中,我开始了一个新的活动(MapActivity.java(,点击按钮如下所示:

//code from HomeFragment.java
buttonMap.setOnClickListener(view -> {
Intent i = new Intent(rootView.getContext(), MapActivity.class);
requireActivity().finish();
startActivity(i);
});

然后,在MapActivity类中,我想处理后退按钮点击,因此我覆盖onBackPressed((方法,返回MainActivity类,如图所示:

//code from MapActivity.java
@Override
public void onBackPressed() {
super.onBackPressed();
Intent i = new Intent(ctx, MainActivity.class);
startActivity(i);
finish();
}

问题是,当我在模拟器上尝试这个操作时,它不起作用,我在控制台中收到一条消息,比如:

W/ViewRootImpl[MapActivity]: Dropping event due to no window focus: KeyEvent { action=ACTION_DOWN, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x48, repeatCount=0, eventTime=12119542, downTime=12119542, deviceId=-1, source=0x101 }
W/ViewRootImpl[MapActivity]: Cancelling event due to no window focus: KeyEvent { action=ACTION_UP, keyCode=KEYCODE_BACK, scanCode=0, metaState=0, flags=0x68, repeatCount=0, eventTime=12119616, downTime=12119542, deviceId=-1, source=0x101 }

有人知道怎么解决吗?谢谢

您可以尝试使用这个:

override fun onKeyDown(keyCode: Int, event: KeyEvent?): Boolean {
if (keyCode == KeyEvent.KEYCODE_BACK) {
onBackPressed()
}
return super.onKeyDown(keyCode, event)
}
override fun onBackPressed() {
val myIntent = Intent(this, MainActivity::class.java)
myIntent.flags = Intent.FLAG_ACTIVITY_CLEAR_TOP
startActivity(myIntent)
finish()
return
}

您不需要返回的意图,只需将其替换为即可

getActivity((.onBackPressed(((;

最新更新