gpt4 book ai didi

android - 在 Fragments Android 中使用后退按钮

转载 作者:行者123 更新时间:2023-11-29 19:40:00 26 4
gpt4 key购买 nike

我想在 Fragments 中使用 BackButton。我正在使用这段代码来处理后退按钮:

 @Override
public void onResume() {
super.onResume();

getView().setFocusableInTouchMode(true);
getView().requestFocus();
getView().setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){

if (idozit.num > 0) {
if (!pmenu.pauseopen) {
pmenu.BeingPaused(idozit.idozitomegy,nextlevel,0);
} else {
pmenu.continuegame();
}
}
if (idozit.num == 0) {
idozit.numnull(db);
}
//Toast.makeText(getActivity(), "hello1", Toast.LENGTH_SHORT).show();
return true;
}
return false;
}
});
}

当我点击 BackButton 时,这段代码工作正常,但如果再次点击 BackButton,应用程序会从 MainActivity 调用 onBackPressed 方法。我不知道为什么,但如果我在 onKey 方法中只使用 ToastLog.d 之类的东西,那么我'我可以再次点击它。我想说 pmenu 是一个简单的类,它只会停止音乐、让事情消失等。似乎不知何故我总是被困在那个类中。你知道我做错了什么吗?

最佳答案

一个更简洁的解决方案是让每个 fragment 都使用一个名为 onBackPressed() 的方法实现一个接口(interface),如下所示:

public interface FragmentInterface {
void onBackPressed();
}

然后,您在调用当前 fragment 的 onBackPressed 的 Activity 中覆盖 onBackPressed(我假设您有获取 currentFragment 的方法)

@Override
public void onBackPressed(){
FragmentInterface currentfragment = getCurrentFragment();
currentfragment.onBackPressed();
}

当然,在你的 fragment 中,实现的方法应该是这样的:

@Override
public void onBackPressed() {
if (idozit.num > 0) {
if (!pmenu.pauseopen) {
pmenu.BeingPaused(idozit.idozitomegy,nextlevel,0);
} else {
pmenu.continuegame();
}
}
if (idozit.num == 0) {
idozit.numnull(db);
}
//Toast.makeText(getActivity(), "hello1", Toast.LENGTH_SHORT).show();
}

关于android - 在 Fragments Android 中使用后退按钮,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38721712/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com