在WebView中执行“取消”按钮

时间:2012-02-23 05:31:36

标签: android html

我正在使用自己的html代码在WebView中显示html页面。我想点击取消按钮关闭当前活动。 我的代码就像:

public class WebHtml extends Activity
{
        String historyUrl, baseUrl;
        URL url = null;
        WebView mWebView;

String html = "<html>" + 
                "<body>" +
                "<form id='form1' name='form1' method='post' action='get.html'>" +
                "User <input type='text' name='user'>   <br />" +
                "Password <input type='password' name='user'>   <br />" +
                "<input type='submit' name='Submit' value='Login' />" +
                "<input type='button' value='Cancel' name='Cancel' onClick='javascript:window.close();'' />" +
                "</form>" +
                "</body>" +
                "</html>";

public void onCreate(Bundle savedInstanceState)
        {
            super.onCreate(savedInstanceState);
           // setContentView(R.layout.webview);
            mWebView = new WebView(this);
            mWebView.getSettings().setJavaScriptEnabled(true);  
            mWebView.loadDataWithBaseURL(baseUrl, html, "text/html", "utf-8", historyUrl);
            mWebView.setWebViewClient(new HelloWebViewClient());
            setContentView(mWebView);
        }

        @Override 
        public boolean onKeyDown(int keyCode, KeyEvent event) 
        { 
            if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) 
            { 
                mWebView.goBack();
                return true; 
            } 
            return super.onKeyDown(keyCode, event); 

        }

        private class HelloWebViewClient extends WebViewClient 
        { 
            public void onPageStarted(WebView view, String url, Bitmap bitmap)
            {
                Log.i("ShowForm", "onPageStarted()" + System.currentTimeMillis());
                historyUrl = url.toString();
            }
            public void onPageFinished(WebView view, String url)
            {
                Log.i("ShowForm", "onPageFinisheded()" + System.currentTimeMillis());
                baseUrl = url.toString();
            }

            @Override 
            public boolean shouldOverrideUrlLoading(WebView view, String url)
            { 

                view.loadUrl(url);
                return true; 
            } 
        }
}

问题是我无法使其关闭当前的表单活动。我在onClick上使用了(window.close(),form.close(),javascript:window.close()但是它们没有显示效果)&amp; (我尝试了window.unload(),这使得异常)此外,System.exit()会在活动首次启动时关闭应用程序。

请建议我该怎么做。

谢谢,

HAPS。

1 个答案:

答案 0 :(得分:1)

您可以将取消按钮的onClick更改为网址吗?类似于onClick="document.location.href='http://exitActivity';"

然后在您的shouldOverrideUrlLoading方法中,您可以拦截该网址并退出该应用。

@Override 
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
    if (url.contains("http://exitActivity")
        finish();  // close activity
    else
        view.loadUrl(url);

    return true; 
}
相关问题