url在浏览器中加载,而不是在android中加载WebView

时间:2015-10-16 05:50:23

标签: android webview runtime android-linearlayout

我想在运行时创建一个linearLayout,一个WebView,而我的android项目中没有任何xml,并在webView中加载一个url。

我已经宣布了一个webView:

WebView web =new WebView(this);

我添加了一个linearLayout:

LinearLayout view = new LinearLayout(MainActivity.this);
        view.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT)); 
        view.setOrientation(LinearLayout.VERTICAL);

然后我添加了一个webView:

web.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
        view.addView(web);

现在我加载了网址:

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





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

但是没有任何反应。

如果我没有设置webViewClient,则在浏览器中加载url而不是webView 我只想在webView中加载网址。请帮忙。

2 个答案:

答案 0 :(得分:0)

我认为你应该使用WebVideClient,这是一个简单的例子:

    web.setWebViewClient(new myWebClient());
    web.getSettings().setJavaScriptEnabled(true);
    web.loadUrl("http://www.google.com");


public class myWebClient extends WebViewClient
{
    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        // TODO Auto-generated method stub
        super.onPageStarted(view, url, favicon);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub

        view.loadUrl(url);
        return true;

    }
}


    // To handle "Back" key press event for WebView to go back to previous screen.
   @Override
   public boolean onKeyDown(int keyCode, KeyEvent event)
  {
    if ((keyCode == KeyEvent.KEYCODE_BACK) && web.canGoBack()) {
        web.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
   }
}

答案 1 :(得分:0)

我有类似于你的问题,我最终做的是以更好的方式设置WebViewClient

public WebView web;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);

        web = ((WebView) rootView.findViewById(R.id.webpage_detail));
        web.loadUrl(mItem.url);
        web.setWebViewClient(new myWebClient());
        web.getSettings().setJavaScriptEnabled(true);

        return rootView;
}

  public class myWebClient extends WebViewClient {
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        // TODO Auto-generated method stub
        view.loadUrl(url);
        return true;

    }

只需看一下这对我有用的webViewClient代码。设置也会推荐getSettings().setJavaScriptEnabled(true); 因为大多数网站都需要在移动视图上运行javascript,例如Twitter