Android 如何通过执行1功能禁用设备中的后退按钮
我正试图用以下代码禁用设备中的“后退”按钮。 代码正在工作,但我希望处理片段中所有后退按钮请求的函数将派生自主活动 这是后退按钮处理程序:Android 如何通过执行1功能禁用设备中的后退按钮,android,Android,我正试图用以下代码禁用设备中的“后退”按钮。 代码正在工作,但我希望处理片段中所有后退按钮请求的函数将派生自主活动 这是后退按钮处理程序: @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); getView().setFocusableInTouchMode(true); getView().req
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
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_DOWN) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
Toast.makeText(getActivity(), "Please navigate via the menu", Toast.LENGTH_SHORT).show();
return true;
}
}
return false;
}
});
}
禁用“后退”按钮通常不是最好的主意,因为用户希望该按钮执行某种后退导航。话虽如此,如果您有特定的原因,您可以通过在“活动”级别覆盖而不调用super来禁用“后退”按钮。将此代码放在您的MainActivity中:
@Override
public void onBackPressed() {
executeAtAndroidOnBackPressed();
}
@Override
public boolean onKeyDown(final int keyCode, final KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
executeAtAndroidOnBackPressed();
}
return false;
}
protected void executeAtAndroidOnBackPressed() {
// do nothing
}
更容易在按下时覆盖
功能:
private boolean disabled = true;
@Override
public void onBackPressed() {
if (!disabled) {
super.onBackPressed();
}
}
使用此功能,您可以轻松更改禁用标志,并在需要时启用后退按钮。正如我所知,您需要覆盖每个活动的onBackPressed()函数。我有一个包含所有片段的主活动,但如何从每个片段中的主活动使用此方法?我将编辑我的答案。您应该更新您的问题以添加此信息。根据该代码,我需要在每个片段中添加哪些代码?我尝试了您的代码,并在executeAtAndroidOnBackPressed()中添加了Toast.makeText行(此“back”,Toast.LENGTH\u LONG);但它没有显示任何内容,只是在不显示任何消息的情况下禁用按钮。您应该在片段中删除任何后台配置。
private boolean disabled = true;
@Override
public void onBackPressed() {
if (!disabled) {
super.onBackPressed();
}
}