Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Webview片段:返回按钮和下载侦听器?_Javascript_Android_Webview_Download_Fragment - Fatal编程技术网

Javascript Webview片段:返回按钮和下载侦听器?

Javascript Webview片段:返回按钮和下载侦听器?,javascript,android,webview,download,fragment,Javascript,Android,Webview,Download,Fragment,我制作了一个简单的webview应用程序。使用Webview片段。应用程序工作正常。但问题是我点击后退按钮,应用程序关闭。第二个问题是我点击html页面链接。链接未在默认浏览器中打开。错误表示网页未打开。我想所有的标签打开在同一个webview和后退按钮和下载链接正常工作。我的代码是 MyWebViewFragment.java package com.example.com; 导入android.app.Fragment; 导入android.app.ProgressDialog; 导入an

我制作了一个简单的webview应用程序。使用Webview片段。应用程序工作正常。但问题是我点击后退按钮,应用程序关闭。第二个问题是我点击html页面链接。链接未在默认浏览器中打开。错误表示网页未打开。我想所有的标签打开在同一个webview和后退按钮和下载链接正常工作。我的代码是

MyWebViewFragment.java

package com.example.com;
导入android.app.Fragment;
导入android.app.ProgressDialog;
导入android.os.Bundle;
导入android.view.LayoutInflater;
导入android.view.view;
导入android.view.ViewGroup;
导入android.webkit.WebSettings;
导入android.webkit.WebView;
导入android.webkit.WebViewClient;
公共类MyWebViewFragment扩展了片段{
进步;
网络视图;
@凌驾
创建视图上的公共视图(布局、充气机、视图组容器、,
Bundle savedInstanceState){
视图根视图=充气机。充气(R.layout.web\u碎片,容器,
假);
Bundle=getArguments();
字符串url=bundle.getString(“url”);
webview=(webview)rootView.findviewbyd(R.id.webview1);
WebSettings=webview.getSettings();
settings.setJavaScriptEnabled(true);
mProgress=ProgressDialog.show(getActivity(),“加载”,
“请稍等片刻……”;
loadUrl(url);
setWebViewClient(新的WebViewClient(){
@凌驾
公共布尔值shouldOverrideUrlLoading(WebView视图,字符串url){
view.loadUrl(url);
返回true;
}
@凌驾
公共void onPageFinished(WebView视图,字符串url){
super.onPageFinished(视图、url);
if(mProgress.isShowing()){
mProgress.disclose();
}
}
});
返回rootView;
}

}
要在webview中打开URL,请使用以下代码

  protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
     webView = (WebView) findViewById(R.id.webView);
                WebSettings webSettings = webView.getSettings();
                webSettings.setJavaScriptEnabled(true);
                webSettings.setPluginState(WebSettings.PluginState.OFF);
                webSettings.setSupportMultipleWindows(true);
                webSettings.setBuiltInZoomControls(true);
                webSettings.setAppCacheMaxSize(1);
                webSettings.setCacheMode(WebSettings.LOAD_NO_CACHE);
                webSettings.setAppCacheEnabled(false);

        //        webView.setVerticalScrollBarEnabled(false);
        //        webView.setHorizontalScrollBarEnabled(false);
                webView.setWebChromeClient(new WebChromeClient());
                webView.clearCache(true);
        //        webView.setInitialScale(100);
        //        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
                webView.setBackgroundColor(0);
                webView.setWebViewClient(new WebViewClient() {

                    @Override
                    public boolean shouldOverrideUrlLoading(WebView view, String url) {
                        view.loadUrl(url);
                        Log.e("", "shouldOverrideUrlLoading load url" + url);
                        return false;
                    }

                    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                        super.onReceivedError(view, errorCode, description, failingUrl);
                        isLoaded = false;
                        progressDialog.setMessage("Unknown Error!");

                        Handler handler = new Handler();
                        handler.postDelayed(new Runnable() {
                            public void run() {
                                try {
                                    progressDialog.dismiss();
                                } catch (Exception e) {
                                }
                            }
                        }, 1500);
                    }

                    public void onPageStarted(WebView view, String url, Bitmap favicon) {
                        super.onPageStarted(view, url, favicon);
                        displayProgress(getString(R.string.loading), getString(R.string.loading));
                        Log.e("onPageStarted",url);
                    }

                    public void onPageFinished(WebView view, String url) {
                        isLoaded = true;
                        super.onPageFinished(view, url);

                        Handler handler = new Handler();
                        handler.postDelayed(new Runnable() {
                            public void run() {
                                try {
                                    progressDialog.dismiss();
                                } catch (Exception e) {
                                }
                            }
                        }, 1500);
                    }

                });

    web_link = "https://twitter.com";
                        webView.loadUrl(web_link);
}
 public void displayProgress(String title,String mes){
        if (progressDialog!=null)
            progressDialog.dismiss();
        progressDialog = new ProgressDialog(MainActivity.this);
        //          progressDialog.setTitle(title);
        progressDialog.setMessage(mes);
        progressDialog.setIndeterminate(false);
        progressDialog.setCancelable(true);

        try {
            progressDialog.show();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
若要返回web视图,请将此方法覆盖到您的活动

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK) {
            if (web_link!=null && !webView.getUrl().equals(web_link))
                webView.goBack();
            else{
                AlertDialog.Builder builder = new AlertDialog.Builder(this);
                builder.setMessage(R.string.to_exit)
                        .setCancelable(false)
                        .setPositiveButton(getString(android.R.string.yes), new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                MainActivity.this.finish();
                            }
                        })
                        .setNegativeButton(getString(android.R.string.no), new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog, int id) {
                                dialog.cancel();
                            }
                        });
                AlertDialog alert = builder.create();
                alert.show();
            }
        }
        return super.onKeyDown(keyCode, event);
    }

您好,您没有将WebViewFragment添加到backstack。fragmentManager.addToBackStack(空)