509

Activityにタイトルと Web ビューを持つを作成しましたLinearLayoutonResume()メソッドで を呼び出しますwebView.loadUrl(url)。問題は、アクティビティが最初に画面の残りの部分を空白にしてタイトルを表示し、次にデバイス ブラウザーが URL のページで起動されることです。私が見たいのはWebView、タイトルの下に表示されているページです。何が問題なのですか?

編集:わかりました、さらに検索を行ったところ、これが見つかりました:

URL をクリックするとデフォルトのブラウザが開きます

WebViewチュートリアルhereを指します。

Web クライアントを実装して設定するだけです。

4

10 に答える 10

862

Maudicus と Hit からの提案に基づいて私の質問に答えます。

こちらの WebView チュートリアルを確認してください。Web クライアントを実装し、 loadUrl の前に設定するだけです。最も簡単な方法は次のとおりです。

myWebView.setWebViewClient(new WebViewClient());

Web コンテンツのより高度な処理については、ChromeClient を検討してください。

于 2012-10-09T14:21:51.960 に答える
57

次のように使用します。

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_dedline);

    WebView myWebView = (WebView) findViewById(R.id.webView1);
    myWebView.setWebViewClient(new WebViewClient());
    myWebView.loadUrl("https://google.com");
}
于 2014-04-29T13:49:10.810 に答える
28

アクティビティを次のようにします。

public class MainActivity extends Activity {
WebView browser;

@Override
 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // find the WebView by name in the main.xml of step 2
    browser=(WebView)findViewById(R.id.wvwMain);

    // Enable javascript
    browser.getSettings().setJavaScriptEnabled(true);  

    // Set WebView client
    browser.setWebChromeClient(new WebChromeClient());

    browser.setWebViewClient(new WebViewClient() {

        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
                view.loadUrl(url);
                return true;
                }
        });
     // Load the webpage
    browser.loadUrl("http://google.com/");
   }
}
于 2016-01-21T12:41:57.897 に答える
23

私は同じ問題に直面していましたが、解決策 Android's official Documentation about WebViewを見つけました

これが私のonCreateView()方法で、ここでは2つの方法を使用してURLを開きます。

方法1はブラウザで URLを開き、

方法2は目的のWebViewでURLを開きます。
そして、私はアプリケーションに方法 2 を使用しています。これが私のコードです。

public class MainActivity extends Activity {
   private WebView myWebView;

     @Override
     public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

      View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);

      // Show the dummy content as text in a TextView.
      if (mItem != null) {

         /* Method : 1
          This following line is working fine BUT when we click the menu item then it opens the URL in BROWSER not in WebView */
         //((WebView)   rootView.findViewById(R.id.detail_area)).loadUrl(mItem.url);

        // Method : 2
        myWebView = (WebView) rootView.findViewById(R.id.detail_area); // get your WebView form your xml file
        myWebView.setWebViewClient(new WebViewClient()); // set the WebViewClient
        myWebView.loadUrl(mItem.url); // Load your desired url
    }

    return rootView;
}                                                                                               }
于 2015-08-19T04:52:39.483 に答える
8

このコードを試してください...

private void startWebView(String url) {

    //Create new webview Client to show progress dialog
    //When opening a url or click on link

    webView.setWebViewClient(new WebViewClient() {      
        ProgressDialog progressDialog;

        //If you will not use this method url links are opeen in new brower not in webview
        public boolean shouldOverrideUrlLoading(WebView view, String url) {              
            view.loadUrl(url);
            return true;
        }

        //Show loader on url load
        public void onLoadResource (final WebView view, String url) {
            if (progressDialog == null) {
                // in standard case YourActivity.this
                progressDialog = new ProgressDialog(view.getContext());
                progressDialog.setMessage("Loading...");
                progressDialog.show();
            }
        }
        public void onPageFinished(WebView view, String url) {
            try{
            if (progressDialog.isShowing()) {
                progressDialog.dismiss();
                progressDialog = null;
            }
            }catch(Exception exception){
                exception.printStackTrace();
            }
        }

    }); 

     // Javascript inabled on webview  
    webView.getSettings().setJavaScriptEnabled(true); 

    // Other webview options
    /*
    webView.getSettings().setLoadWithOverviewMode(true);
    webView.getSettings().setUseWideViewPort(true);
    webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
    webView.setScrollbarFadingEnabled(false);
    webView.getSettings().setBuiltInZoomControls(true);
    */

    /*
     String summary = "<html><body>You scored <b>192</b> points.</body></html>";
     webview.loadData(summary, "text/html", null); 
     */

    //Load url in webview
    webView.loadUrl(url);
}
于 2015-08-13T07:18:40.010 に答える
6

このように使用できる単純な回答

public class MainActivity extends AppCompatActivity {

     @Override
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         WebView webView = new WebView(this);
         setContentView(webView);
         webView.setWebViewClient(new WebViewClient());
         webView.loadUrl("http://www.google.com");
   }
}
于 2016-06-07T14:48:35.173 に答える
0

URLのフォーマットに依存することがわかりました:

私のコードはただ使用します

webview.loadUrl(url)

設定する必要はありません

webView.setWebViewClient(new WebViewClient())

少なくとも私の場合。多分それはあなたの何人かにとって役に立ちます。

于 2021-02-09T15:40:57.597 に答える