webview片段按回以返回

时间:2016-04-25 02:50:40

标签: android webview fragment back

您好我有一个recycleview的Android应用程序。当用户点击回收button上的viewholder时。应用会启动webviewfragment内)。我想在用户点击后退按钮时处理,webview会在有历史记录的情况下进行处理,如果没有历史记录,应用会关闭webview片段并返回recycleview

当有历史记录时,我已经成功处理了背面(但如果没有历史记录,webview无法返回到回收视图

这是我的网页视图代码

webView.setOnKeyListener(new View.OnKeyListener() {

                public boolean onKey(View v, int keyCode, KeyEvent event) {
                    if (keyCode == KeyEvent.KEYCODE_BACK) {
                        if (webView.canGoBack()) {
                            webView.goBack();
                        }else {
                            getActivity().getSupportFragmentManager().popBackStack();
                        }
                        return true;
                    }
                    return false;
                }

            });

这些代码有什么问题吗?任何帮助都非常感激。感谢

编辑我在recycleview adapter类中使用这些代码来处理ViewHolder

上的按钮点击
url.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {
                    Bundle bundle = new Bundle();
                    bundle.putString("topStoryUrl", topStories.get(getLayoutPosition()).getUrl());

                    TopStoryWebView topStoryWebViewFragment = new TopStoryWebView();
                    topStoryWebViewFragment.setArguments(bundle);
                    if (ItemListActivity.mTwoPane) {

                        ((FragmentActivity) context).getSupportFragmentManager()
                                .beginTransaction()
                                .add(R.id.item_detail_container, topStoryWebViewFragment)
                                .commit();
                    } else {
                        topStoryWebViewFragment.setArguments(bundle);
                        ((FragmentActivity) context).getSupportFragmentManager()
                                .beginTransaction()
                                .add(R.id.frameLayout, topStoryWebViewFragment)
                                .commit();
                    }
                }
            });

1 个答案:

答案 0 :(得分:1)

addToBackStack会将您的片段添加到堆栈中,稍后您可以访问此堆栈

((FragmentActivity) context).getSupportFragmentManager()
.beginTransaction()
.add(R.id.item_detail_container, topStoryWebViewFragment) 
// Add this transaction to the back stack (name is an optional name for this back stack state, or null). 
.addToBackStack(null) 
.commit();