如果在 WebView 片段中按下后退按钮,如何返回上一页?

Posted

技术标签:

【中文标题】如果在 WebView 片段中按下后退按钮,如何返回上一页?【英文标题】:How to go back to previous page if back button is pressed in WebView fragment? 【发布时间】:2016-10-06 11:48:30 【问题描述】:

我想在我的 WebView 片段中实现一个代码以返回到以前的页面。我找到了一个解决方案here,但我不知道在我的 WebView 片段中添加它的位置。有人可以帮我弄这个吗?我应该将它添加到 MainActivity 还是我的 WebView Fragment 中?

MyWebViewFragment.java:

package tkr.firstprojects.com.tkr;

import android.app.Fragment;
import android.app.ProgressDialog;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebBackForwardList;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MyWebViewFragment extends Fragment 

WebView webview;

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) 
    View rootView = inflater.inflate(R.layout.web_fragment, container,
            false);

    Bundle bundle = getArguments();

    String url = bundle.getString("url");

    webview = (WebView) rootView.findViewById(R.id.webView1);

    WebSettings settings = webview.getSettings();
    settings.setjavascriptEnabled(true);
    settings.setBuiltInZoomControls(true);
    settings.setSupportZoom(true);


    webview.loadUrl(url);

    webview.setWebViewClient(new WebViewClient() 
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) 

            view.loadUrl(url);
            return true;
        



    );

    return rootView;


 

这是我想从解决方案中添加的代码以返回到前一页。我应该在哪里添加这个?

webView.setOnKeyListener(new OnKeyListener()

@Override
public boolean onKey(View v, int keyCode, KeyEvent event)

    if(event.getAction() == KeyEvent.ACTION_DOWN)
    
        WebView webView = (WebView) v;

        switch(keyCode)
        
            case KeyEvent.KEYCODE_BACK:
                if(webView.canGoBack())
                
                    webView.goBack();
                    return true;
                
                break;
        
    

    return false;
 
);

【问题讨论】:

How to go back to previous page if back button is pressed in WebView?的可能重复 【参考方案1】:

在你的片段活动中

@Override
public void onBackPressed() 
   //Get fragment and webview from the fragment
   webview.goBack();

【讨论】:

您好,感谢您的回答。我是一个新手,你能告诉我应该在哪里将它添加到我的代码中。我应该将它添加到末尾还是 onCreate? 添加片段的活动是应该去的地方。如果您不动态添加片段,则覆盖应该在绘制带有片段的布局的活动中。

以上是关于如果在 WebView 片段中按下后退按钮,如何返回上一页?的主要内容,如果未能解决你的问题,请参考以下文章

如果在 WebView 中按下后退按钮,如何返回上一页?

如何禁用在android片段类中按下的后退按钮

如何防止在android片段中按下后退按钮时调用onCreateView

在 webview 片段中实现后退按钮

在android中按下后退按钮后如何返回相同的选项卡?

如何检测在导航控制器的下一个视图控制器中按下后退按钮