onBackPressed和onKeyDown无法正常工作

时间:2013-07-07 07:22:59

标签: android android-fragments back-button

我的应用中有一个活动,我有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();
    }
}

这些方法都不起作用,后退按钮只关闭应用程序。

1 个答案:

答案 0 :(得分:3)

onBackPressed是活动的函数,而不是片段。您必须在Activity中捕获它并将其传递给要处理的片段