2011-10-07 108 views
0

我想有一个按钮,按下显示网页,我用的是标准的做法与WebViewClient和WebChromClient像这样:Android的后退按钮不会返回到当前活动

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(); 
    } 
} 

回答

2

我想这是因为你使用WebViewClient,而不是使用标准的浏览器启动:

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

在这种情况下BACK按钮将关闭浏览器活动,你将得到你的主要活动。

在你的情况我建议在onBackPressed() - 恢复原来的内容选择

setContentView(my_original_layout); 
+0

谢谢,这是我俯瞰的setContentView。 –

相关问题