0

我的应用程序中有一项活动,我有 2 个片段 - AB。在MainActivity布局中有一个 FrameLayout。从MainActivity我调用 FragmentManager 将片段 A 加载到 FrameLayout 中。然后,我从片段 A 将片段 B加载到 FrameLayout 中。在我的片段 B中,我从MainActivity实现onBackPressed()和 *onKeyDown(int _a, KeyEvent _b)*以使后退按钮与片段 B 中的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();
    }
}

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

4

1 回答 1

3

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

于 2013-07-07T07:24:44.760 回答