WebViewClient的Android后退按钮不会返回当前的Activity

时间:2011-10-07 04:17:34

标签: android webviewclient webchromeclient

我希望按下按钮显示网页,我使用标准方法使用WebViewClient和WebChromClient,如下所示:

final Button revsButton = (Button) this.findViewById(R.id.buttonReviews);
revsButton.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        wb.setWebViewClient(new ShareWebViewClient());  
        wb.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress) {
                activity.setTitle("Loading Reviews...");
                activity.setProgress(progress * 100); 
                if(progress == 100)
                    activity.setTitle(R.string.app_name);
            }
        });
        wb.getSettings().setJavaScriptEnabled(true);  
        wb.loadUrl(revString );  
        setContentView(wb);                         
    }
}); 


private class ShareWebViewClient extends WebViewClient {  
    public boolean shouldOverrideUrlLoading(WebView view, String url) {   
        view.loadUrl(url);   
        return true;  
    } 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
          Toast.makeText(activity, "Oh no! " + description, Toast.LENGTH_SHORT).show();
      }
} 

这一切都很有效,就是当我按下Back按钮时它完全退出我的Activity并返回上一页。我真正想要的后退按钮是关闭WebViewClient并使用其上的按钮返回显示。这是我到目前为止尝试做的一半 - 它没有离开活动,但活动页面只是一个空白屏幕,而不是显示应该在那里的控件。

@Override
public void onBackPressed() {
    if (wb.getVisibility() == View.VISIBLE) {
        wb.setVisibility(View.INVISIBLE);
    } else {
        finish();
    }
}

1 个答案:

答案 0 :(得分:2)

我认为这是因为您使用WebViewClient而不是使用标准启动浏览器:

Uri uri=Uri.parse(urlString);
Intent intent = new Intent(Intent.ACTION_VIEW, uri);
activity.startActivity(intent);

在这种情况下,“返回”按钮将关闭浏览器活动,您将恢复主要活动。

在我的情况下,我会在onBackPressed()中提议 - 恢复原始内容选择

setContentView(my_original_layout);