Javascript Webview片段:返回按钮和下载侦听器?
我制作了一个简单的webview应用程序。使用Webview片段。应用程序工作正常。但问题是我点击后退按钮,应用程序关闭。第二个问题是我点击html页面链接。链接未在默认浏览器中打开。错误表示网页未打开。我想所有的标签打开在同一个webview和后退按钮和下载链接正常工作。我的代码是 MyWebViewFragment.javaJavascript 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
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(空)