onPageFinished方法被调用之前该网站完成加载? [英] onPageFinished method is called BEFORE the website finishes loading?

查看:164
本文介绍了onPageFinished方法被调用之前该网站完成加载?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

看来,我做了一些不准确或我错过了就什么公共类myWebViewClient 类和公共无效onPageFinished(的WebView视图,字符串URL)。最初在一开始我试图推出www.yahoo.com和它完成加载后我火敬酒从onPageFinished的公共无效里面(的WebView视图,字符串URL)作为指示我www.yahoo.com的装载完成后,和多达这里每一件事情是罚款。里面我的RelativeLayout我有一个按钮的EditText和我的WebView是layedout,在他们之上。有一个EditText的目的是让用户输入他们的webite并点击去按钮,输入的网址应该推出,我希望看到公共无效onPageFinished(的WebView内敬酒我有看来,字符串URL)再次新网站解雇后完成加载。但是,什么情况是,一旦用户在外地的EditText进入一个新的网站,甚至在网站载入前preSS go_button敬酒火灾后,立即和它再次在同一网站加载完成后触发。其实,我希望每一个网站加载完毕后,才敬酒被解雇,但什么是与我发生的事情不是那样的。请为我提供建议,以prevent发生这样的问题。

Java的code:

  OnClickListener btnGoListener =新OnClickListener(){    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根
        webView00.loadUrl(etUrl.getText()的toString());
    }
};
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    的setContentView(R.layout.activity_web_page00);    webView00 =(的WebView)findViewById(R.id.webView00);
    btnGo =(按钮)findViewById(R.id.go_btn);
    etUrl =(EditText上)findViewById(R.id.url_edittext);    webView00.getSettings()setJavaScriptEnabled(真)。
    webView00.setWebViewClient(新myWebViewClient());
    webView00.setWebChromeClient(新myWebChromeClient());    btnGo.setOnClickListener(btnGoListener);
    webView00.loadUrl(http://google.com);
}公共类myWebChromeClient扩展WebChromeClient {}公共类myWebViewClient扩展WebViewClient {
    @覆盖
    公共无效onPageFinished(的WebView视图,字符串URL){
        super.onPageFinished(查看,网址);
        Toast.makeText(getBaseContext(页),完成,Toast.LENGTH_LONG)
                       。显示();
        }
    };


解决方案

没有尝试过Chrome用户端还,所以有评论说一出门,也许你可以无缝地在它们之间改变。

不过,我想这样的事情应该工作:

  OnClickListener btnGoListener =新OnClickListener(){    @覆盖
    公共无效的onClick(视图v){
        // TODO自动生成方法存根
        webView00.loadUrl(etUrl.getText()的toString());
        webView00.setWebViewClient(新WebViewClient(){            公共无效onPageFinished(的WebView视图,字符串URL){
                Toast.makeText(getBaseContext(),正在加载完成2,Toast.LENGTH_LONG)
                。显示();
            }
        });
    }
};
@覆盖
保护无效的onCreate(捆绑savedInstanceState){
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    的setContentView(R.layout.activity_web_page00);    webView00 =(的WebView)findViewById(R.id.webView00);
    btnGo =(按钮)findViewById(R.id.go_btn);
    etUrl =(EditText上)findViewById(R.id.url_edittext);    webView00.getSettings()setJavaScriptEnabled(真)。    btnGo.setOnClickListener(btnGoListener);
    webView00.loadUrl(http://google.com);    //webView00.setWebViewClient(new myWebViewClient());
    //webView00.setWebChromeClient(new myWebChromeClient());
    webView00.setWebViewClient(新WebViewClient(){        公共无效onPageFinished(的WebView视图,字符串URL){
            Toast.makeText(getBaseContext(页),成品1,Toast.LENGTH_LONG)
            。显示();
        }
    });
}

It seems that I made some inaccuracies or I missed something regarding public class myWebViewClient class and public void onPageFinished(WebView view, String url). Initially and in the beginning I tried to launch www.yahoo.com and after it finishes loading I fire a toast from inside the public void onPageFinished(WebView view, String url) as indication to me the loading of the www.yahoo.com is finished, and up to here every thing is fine. Inside my RelativeLayout I have a button and edittext and my webview is layedout-above them. The purpose of having an edittext is to enable the user to enter their webite and by clicking on go-button, the entered website should be launched and I expect to see the toast I have inside public void onPageFinished(WebView view, String url) is fired again after the new website finishes loading. But what happens is, once the user enters a new website in the edittext field and immediately after they press go_button the toast fires before even the website is loaded and it fires once again after the same web site is finished loading. Actually, I expect the toast to be fired only after every website finishes loading, but what is happening with me is not like that. Please provide me with suggestions to prevent occurring such problem.

JavaCode:

OnClickListener btnGoListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        webView00.loadUrl(etUrl.getText().toString());
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_web_page00);

    webView00 = (WebView) findViewById(R.id.webView00);
    btnGo = (Button) findViewById(R.id.go_btn);
    etUrl = (EditText) findViewById(R.id.url_edittext);

    webView00.getSettings().setJavaScriptEnabled(true);
    webView00.setWebViewClient(new myWebViewClient());
    webView00.setWebChromeClient(new myWebChromeClient());

    btnGo.setOnClickListener(btnGoListener);
    webView00.loadUrl("http://google.com");
}

public class myWebChromeClient extends WebChromeClient {

}

public class myWebViewClient extends WebViewClient {        
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
        Toast.makeText(getBaseContext(), "Loading Finished", Toast.LENGTH_LONG)
                       .show();
        }
    };

解决方案

Have not tried the Chrome client yet, so have commented that one out, perhaps you can change seamlessly between them.

Nevertheless, I would think something like this should work:

OnClickListener btnGoListener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        webView00.loadUrl(etUrl.getText().toString());
        webView00.setWebViewClient(new WebViewClient() {

            public void onPageFinished(WebView view, String url) {
                Toast.makeText(getBaseContext(), "Loading Finished 2", Toast.LENGTH_LONG)
                .show();
            }
        });
    }
};
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    requestWindowFeature(Window.FEATURE_NO_TITLE);
    setContentView(R.layout.activity_web_page00);

    webView00 = (WebView) findViewById(R.id.webView00);
    btnGo = (Button) findViewById(R.id.go_btn);
    etUrl = (EditText) findViewById(R.id.url_edittext);

    webView00.getSettings().setJavaScriptEnabled(true);

    btnGo.setOnClickListener(btnGoListener);
    webView00.loadUrl("http://google.com");

    //webView00.setWebViewClient(new myWebViewClient());
    //webView00.setWebChromeClient(new myWebChromeClient());
    webView00.setWebViewClient(new WebViewClient() {

        public void onPageFinished(WebView view, String url) {
            Toast.makeText(getBaseContext(), "Loading Finished 1", Toast.LENGTH_LONG)
            .show();
        }
    });
}

这篇关于onPageFinished方法被调用之前该网站完成加载?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆