为了账号安全,请及时绑定邮箱和手机立即绑定

将代码部署到了小米手机上,url是http://baidu.com;按物理返回键,一直都没有退出整个程序,还是处于百度首页,这是为何呢?

正在回答

5 回答

在监听返回事件之后,退出几次才有效:

原因:网页重定向(因网址变更,将用户请求的网址转到新的网址。)

解决:

webView.setWebViewClient(new WebViewClient(){            public boolean shouldOverrideUrlLoading(WebView view, String url) {

return false;

}

});

0 回复 有任何疑惑可以回复我~

System.exit(0);具体是退出什么呢?真机运行是没有退出的

0 回复 有任何疑惑可以回复我~
#1

Forest_Deer

退出该应用。详情可http://www.cnblogs.com/xwdreamer/archive/2011/01/07/2297045.html
2015-08-27 回复 有任何疑惑可以回复我~

我只是给了你一个示例,业务逻辑需要根据你自己的需求改

    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        //按下返回键处理
        if(keyCode == KeyEvent.KEYCODE_BACK){
            finish();
        }
        return false;
    }


0 回复 有任何疑惑可以回复我~
package com.example.webviewtest;

import android.os.Bundle;
import android.app.Activity;
import android.app.ProgressDialog;
import android.view.KeyEvent;
import android.view.Menu;
import android.webkit.WebChromeClient;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class MainActivity extends Activity {

	private WebView wv;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		wv = (WebView) findViewById(R.id.webView1);
		wv.loadUrl("http://baidu.com");
		//设置启用javascript
		WebSettings settings = wv.getSettings();
		settings.setJavaScriptEnabled(true);
		//设置启用缓存
		settings.setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK);
		//获取焦点
		wv.requestFocus();
		//设置使用webview自身打开网页
		wv.setWebViewClient(new WebViewClient() {
			@Override
			public boolean shouldOverrideUrlLoading(WebView view, String url) {
				view.loadUrl(url);
				return true;
			}
		});
		//设置进度显示
		wv.setWebChromeClient(new WebChromeClient() {
			
			ProgressDialog dialog;
			@Override
			public void onProgressChanged(WebView view, int newProgress) {
				 if(newProgress==100){
					 closeProccgressDialog();
				 }else{
					 openProccgressDialog();
				 }
			}

			private void closeProccgressDialog() {
				if(null!=dialog){
					dialog.dismiss();
					dialog =null;
				}				
			}

			private void openProccgressDialog() {
				if(null==dialog){
				    dialog = new ProgressDialog(MainActivity.this);
				    dialog.setCanceledOnTouchOutside(false);
					dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
					dialog.setMessage("正在加载中,请稍后");
					dialog.show();
				}
			}		
			
		});
	}
	
	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		//按下返回键处理
		if(keyCode == KeyEvent.KEYCODE_BACK&&wv.canGoBack()){
			wv.goBack();
			return true;
		}
		return super.onKeyDown(keyCode, event);
	}

}

这个程序在机子上运行,启动后显示百度首页,然后按物理返回键,始终是在百度首页,要连续按很多次才会退出;将老师您的代码部署了下,也是同样的情况。请问这个可能会是什么情况导致的呢?

0 回复 有任何疑惑可以回复我~

监听一下返回键点击事件

@Override 
  public boolean onKeyDown(int keyCode, KeyEvent event) {         
  //按下键盘上返回按钮
  if(keyCode == KeyEvent.KEYCODE_BACK){
      //........
      return true;
  }  
  return super.onKeyDown(keyCode, event);
}


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Android攻城狮的第二门课(第1季)
  • 参与学习       111161    人
  • 解答问题       1457    个

本课程由浅入深地带您学会Android的常用控件的开发和使用

进入课程
意见反馈 帮助中心 APP下载
官方微信