【问题标题】:webview inside fragment android opening outside of the app in a browser片段android中的webview在浏览器中的应用程序外部打开
【发布时间】:2014-01-16 19:19:59
【问题描述】:

我的应用中有一个 webview,它在外部打开,而我希望它在内部打开...我已经阅读了 stackoverflow 上的所有示例,但仍然不知道为什么会这样

NewsFragment.java

import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;

public class NewsFragment extends Fragment {

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

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

        WebView webView = (WebView)rootView.findViewById(R.id.webView);

        webView.setInitialScale(1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        webView.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
        webView.setScrollbarFadingEnabled(false);

        webView.loadUrl("https://www.google.com");

        return rootView;
    }
}

XML 文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />

</LinearLayout>

【问题讨论】:

  • 仅供参考:我不觉得这是提到的 SO 条目的重复,因为我有一个这样的例子,并且能够使用下面的问题和答案解决我的问题。这是一个很好的 SO 条目。我阅读了可能的重复条目,但我永远不会从那个条目中得到我的解决方案。

标签: android webview fragment


【解决方案1】:

试试这个代码,你必须重写“shouldOverrideUrlLoading()”

String url = "http://appprice.appday.de";

WebView wv = new WebView(context); 
// or 
// WebView wv = (WebView)findViewById(R.id.my_webview);

wv.loadUrl(url);
wv.setWebViewClient(new WebViewClient() {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return true;
    }
});

【讨论】:

  • 它有效,但请您提供更多信息,说明我们应该覆盖此方法的原因。
【解决方案2】:

你需要试试这个

webview.setWebViewClient(new WebViewClient());

【讨论】:

  • 这是正确答案。在调用 loadUrl 之前只需 setWebViewClient。
【解决方案3】:

以下代码对我有用:

webView = finder.find(R.id.webView_for_info);

webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setDomStorageEnabled(true);

webView.setWebViewClient(new WebViewClient());
//webView.setWebChromeClient(new WebChromeClient());

webView.loadUrl("file:///android_asset/info.html");

【讨论】:

    【解决方案4】:

    试试这个:

    public class WebViewGameActivity extends BaseActivity {
        private static final String TAG = WebViewGameActivity.class.getSimpleName();
    
    
        private WebView myWebView;
    
           @SuppressLint("SetJavaScriptEnabled")
        @Override        
           protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.layout_webview);
    
    
              myWebView = (WebView) findViewById(R.id.webview);
    
              // Configure related browser settings
              WebSettings webSettings = myWebView.getSettings();
              webSettings.setJavaScriptEnabled(true);
              webSettings.setLoadsImagesAutomatically(true);
    
              myWebView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
    
              // Configure the client to use when opening URLs
              myWebView.setWebViewClient(new MyBrowser());
    
              // Load the initial URL
              //myWebView.loadUrl("http://www.example.com");
    
              String path = Uri.parse("file:///android_asset/index.html").toString();
              myWebView.loadUrl(path);
    
    
           }//end onCreate
    
    
    
           // Manages the behavior when URLs are loaded
           private class MyBrowser extends WebViewClient {
              @Override
              public boolean shouldOverrideUrlLoading(WebView view, String url) {
                 view.loadUrl(url);
                 return true;
              }
           }
    
    
    
    
    }//end WebViewGameActivity
    

    【讨论】:

      【解决方案5】:

      试试这个...当你点击片段中的网页视图时,它不会要求你在新的浏览器应用程序中打开!

          String url = "https://www.google.co.in/";
          WebView view = (WebView) rootView.findViewById(R.id.webView1);
      
      
          view.getSettings().setJavaScriptEnabled(true);
          view.getSettings().setLoadWithOverviewMode(true);
          view.getSettings().setUseWideViewPort(true);
          view.getSettings().setBuiltInZoomControls(true);
          view.getSettings().setPluginState(WebSettings.PluginState.ON);
          view.setWebViewClient(new WebViewClient());
      
          view.loadUrl(url);
      
          return rootView ;
      }
      

      【讨论】:

        猜你喜欢
        • 2013-02-26
        • 1970-01-01
        • 2015-12-09
        • 2018-07-06
        • 2021-06-12
        • 2022-08-04
        • 2014-07-12
        • 2018-02-11
        相关资源
        最近更新 更多