0

ボタンを押してWebページを表示させたいのですが、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();
      }
} 

これはすべてうまく機能しています。戻るボタンを押すと、アクティビティが完全に終了し、前のページに戻ります。私が本当にやりたいのは、WebViewClientを閉じて、ボタンが付いた状態でディスプレイに戻ることです。これは私がこれまでに試みたもので、半分は機能しました。アクティビティは終了しませんでしたが、アクティビティページは、そこにあるはずのコントロールを表示するのではなく、単なる空白の画面でした。

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

1 に答える 1

2

WebViewClientこれは、標準を使用してブラウザを起動するのではなく、使用しているために発生すると思います。

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

この場合、[戻る] ボタンを押すとブラウザ アクティビティが閉じられ、プライマリ アクティビティに戻ります。

あなたの場合、私は提案しonBackPressed()ます-選択して元のコンテンツを復元します

setContentView(my_original_layout);
于 2011-10-07T04:49:34.573 に答える