0

我的 android 应用程序中的后退按钮有问题。我试图让它回到以前的页面,如果无法退出。我通过开发者网站上的代码进行挑选,但没有任何效果。我将不胜感激任何帮助。下面是我的活动页面:

网络视图网络视图;

@SuppressLint("SetJavaScriptEnabled")
@Override
protected void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    webView = (WebView)findViewById(R.id.webView);
    WebSettings webSettings = webView.getSettings();
    webSettings.setJavaScriptEnabled(true);
    webView.setWebViewClient(new myWebView());
    webView.loadUrl("http://google.com");
    webView.setInitialScale(1);
    webView.getSettings().setBuiltInZoomControls(true);
    webView.getSettings().setUseWideViewPort(true);
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // Check if the key event was the Back button and if there's history
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
        webView.goBack();           
        return true;
    }
    // If it wasn't the Back key or there's no web page history, bubble up to the default
    // system behavior (probably exit the activity)
    return super.onKeyDown(keyCode, event);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) 
{
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.diabetes_meal_planner, menu);
    return true;
}

@Override
public boolean onOptionsItemSelected(MenuItem item)
{
    switch(item.getItemId())
    {
        case R.id.action_settings:
            //exits app
            finish();
            break;

        default:
            break;
    }

    return true;
}

private class myWebView extends WebViewClient
{
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        if(url.startsWith("mailto:"))
        {
            String[] email = url.split(":");
            Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
            emailIntent.setType("plain/text");
            emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[]{email[1]});
            emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "Send_Us_Your_Email");
            Log.v("NOTICE", "Sending Email to" + email[1] + "with subject" + "Send Us Your Feedback");
            startActivity(emailIntent);
        }

        view.loadUrl(url);
        return true;
    }

}
4

2 回答 2

2

不要这样做onKeyDown。覆盖Activity.onBackPressed以执行此操作..

于 2013-06-26T01:42:32.580 回答
0
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webView!=null && webView.canGoBack()) {
        webView.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

最后试试这个,在我的 webview 应用程序中工作

于 2015-04-30T21:39:59.533 回答