我的应用中有一个活动,我有2个片段 - A 和 B 。在 MainActivity 布局中,有一个FrameLayout。从 MainActivity 我调用FragmentManager将片段A加载到FrameLayout中。然后,从片段A 我将片段B 加载到FrameLayout中。 在我的片段B 中,我从 MainActivity 实现 onBackPressed()和* onKeyDown(int _a,KeyEvent _b)*,以使后退按钮与<片段B中的em> WebView 但是就好像我没有实现它一样!
MainActivity界面:
public interface onKeyDownListener {
public void onBackPressed();
public boolean onKeyDown(int _a, KeyEvent _b);
}
片段B实施:
public boolean onKeyDown(int keyCode, KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
mWebView.goBack();
return true;
}
return getActivity().onKeyDown(keyCode, event);
}
public void onBackPressed() {
if (mWebView.isFocused() && mWebView.canGoBack()) {
mWebView.goBack();
} else {
Toast.makeText(getActivity().getApplicationContext(), "This's working!", 50000).show();
getActivity().onBackPressed();
}
}
这些方法都不起作用,后退按钮只关闭应用程序。
答案 0 :(得分:3)
onBackPressed是活动的函数,而不是片段。您必须在Activity中捕获它并将其传递给要处理的片段