簡體   English   中英

webview片段按返回以返回

[英]webview fragment press back to return to

嗨,我有一個recycleview的android應用程序。 當用戶單擊回收viewholder button上的button時。 應用程序將啟動一個webview (在fragment )。 我想處理用戶單擊“后退”按鈕時,如果有歷史記錄,則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();
                    }
                }
            });

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();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM