简体   繁体   English

Android - WebView OnPageStarted,OnPageFinished和shouldOverrideUrlLoading没有被调用

[英]Android - WebView OnPageStarted, OnPageFinished & shouldOverrideUrlLoading not getting called

I am developing an app in that when a user navigates from one link to another link I want to change the content of the edittext and want to show current url in the edittext. 我正在开发一个应用程序,当用户从一个链接导航到另一个链接时,我想更改edittext的内容,并希望在edittext中显示当前的URL。

But these 3 methods are not working, not even printing the logs. 但是这3种方法都不起作用,甚至不打印日志。 Here is the code. 这是代码。

    wv.setWebViewClient(new WebViewClient()
    {
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {               

            String url_new = view.getUrl();

            Log.v("","Webview URL: "+url);

            addressbar.setText(url_new);

            return false;                            
        }

        @Override
        public void onPageFinished(WebView view, String url)
        {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

            String url_new = view.getUrl();                

            Log.v("","Webview Function URL: "+url_new);

            addressbar.setText(url_new);
        }

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

            String url_new = view.getUrl();             

            Log.v("","Webview Function URL: "+url_new);

            addressbar.setText(url_new);
        }
    }); 

wv is the WebView and addressbar is the EditText in above code. wvWebViewaddressbar是上面代码中的EditText

What I am missing?? 我错过了什么?

Please help..!! 请帮忙..!!

EDIT : Whole Code.. 编辑:整码

public class Clip_From_Web_Home extends Activity
 {
WebView wv;

TextView back, clip;
ProgressDialog dialog;

Button previous, reload, next, go;

LinearLayout ll;
public static final int REQUEST_CODE_CROP_IMAGE   = 0x1;
Bitmap drawingCache;

public File mFileTemp;
public static final String TEMP_PHOTO_FILE_NAME = "temp_photo_web_clip.png";
FileOutputStream out;

EditText addressbar;

String url;

@Override
protected void onCreate(Bundle savedInstanceState)
{
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);

    setContentView(R.layout.clip_from_web);

    wv = (WebView) findViewById(R.id.clip_from_web_webView1);

    back = (TextView) findViewById(R.id.clip_from_web_textview_back);
    back.setOnClickListener(new OnClickListener()
    {           
        @Override
        public void onClick(View arg0)
        {
            // TODO Auto-generated method stub
            finish();
        }
    });

    url = "http://www.google.com";

    addressbar = (EditText) findViewById(R.id.clip_web_address_bar);
    addressbar.setText(url);

    //wv.getSettings().setJavaScriptEnabled(true);
    wv.setWebViewClient(new WebViewClient()
    {
        public boolean shouldOverrideUrlLoading(WebView view, String url)
        {               

            String url_new = view.getUrl();

            Log.v("","Webview URL: "+url);

            addressbar.setText(url_new);

            return false;                            
        }

        @Override
        public void onPageFinished(WebView view, String url)
        {
            // TODO Auto-generated method stub
            super.onPageFinished(view, url);

            String url_new = view.getUrl();                

            Log.v("","Webview Function URL: "+url_new);

            addressbar.setText(url_new);
        }

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

            String url_new = view.getUrl();             

            Log.v("","Webview Function URL: "+url_new);

            addressbar.setText(url_new);
        }
    }); 

    go = (Button) findViewById(R.id.clip_web_go);
    go.setOnClickListener(new OnClickListener()
    {

        @Override
        public void onClick(View arg0)
        {
            // TODO Auto-generated method stub

            url = addressbar.getText().toString();

            Log.v("","URL ENTERED: "+url);

            if(url.equals(""))
            {
                url = "http://www.google.com";

                dialog = ProgressDialog.show(Clip_From_Web_Home.this,"","Loading",true,false);

                new webview_load().execute();
            }
            else
            {
                dialog = ProgressDialog.show(Clip_From_Web_Home.this,"","Loading",true,false);

                new webview_load().execute();
            }

        }
    });                 

    dialog = ProgressDialog.show(Clip_From_Web_Home.this,"","Loading",true,false);

    new webview_load().execute();   
}   

class webview_load extends AsyncTask<Void, Void, Void>
{

    @Override
    protected Void doInBackground(Void... arg0)
    {
        // TODO Auto-generated method stub              
        return null;
    }

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onPostExecute(Void result)
    {
        // TODO Auto-generated method stub
        super.onPostExecute(result);

        wv.setBackgroundColor(0);
        wv.setBackgroundResource(android.R.color.black);
        wv.setWebChromeClient(new WebChromeClient());
        wv.setWebViewClient(new WebViewClient());
        WebSettings settings = wv.getSettings();
        settings.setBuiltInZoomControls(true);
        //settings.setDefaultZoom(ZoomDensity.MEDIUM);
        settings.setDefaultZoom(ZoomDensity.FAR);

         wv.setInitialScale(125);
       // settings.setUseWideViewPort(true);
        settings.setRenderPriority(RenderPriority.HIGH);
        settings.setCacheMode(WebSettings.LOAD_NO_CACHE);

        wv.getSettings().setJavaScriptEnabled(true);
        wv.getSettings().setLoadWithOverviewMode(true);
        wv.getSettings().setUseWideViewPort(false);

        wv.loadUrl(url);

        int secondsDelayed = 5;
        new Handler().postDelayed(new Runnable()
        {
                public void run()
                {
                    Log.v("","In Handler");                  
                    dialog.dismiss();
                }
        }, secondsDelayed * 1000);          
    }
}   
}

You're overwriting your WebViewClient in your AsyncTask object: 您正在覆盖AsyncTask对象中的WebViewClient:

 wv.setWebViewClient(new WebViewClient()); 

This overwrites your custom WebViewClient you set in Activity.onCreate(). 这会覆盖您在Activity.onCreate()中设置的自定义WebViewClient。

You can probably get rid of the whole AsyncTask implementation, too. 你也可以摆脱整个AsyncTask实现。 You can call loadUrl in a WebView in the UI thread with no problems. 您可以在UI线程中的WebView中调用loadUrl而不会出现任何问题。 This might simplify things for you greatly. 这可能会大大简化您的工作。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 Android WebView在onPageStarted和onPageFinished之间注入JavaScript - Android WebView inject JavaScript between onPageStarted and onPageFinished Android WebView onPageStarted / onPageFinished方法的说明 - Explanation of Android WebView onPageStarted/onPageFinished methods Webview shouldOverrideUrlLoading 没有被调用 - Webview shouldOverrideUrlLoading not getting called shouldoverrideurlloading不称为Webview Android - shouldoverrideurlloading not called Webview Android 未调用Android webview shouldOverrideUrlLoading - Android webview shouldOverrideUrlLoading is not called 永远不会调用WebViewClient中的onPageFinished / onPageStarted - onPageFinished/onPageStarted in WebViewClient is never called Android:如果在onPageStarted调用之后上网,则不会调用WebViewClient onPageFinished / onReceivedError - Android: WebViewClient onPageFinished/onReceivedError not called if internet goes after onPageStarted call Android:Android 4.4中的shouldOverrideUrlLoading方法之后未调用WebView onPageFinished - Android : WebView onPageFinished not calling after shouldOverrideUrlLoading method in android 4.4 onPageFinished有时不叫Android WebView - onPageFinished sometimes not called Android WebView Android WebView shouldOverrideUrlLoading方法未调用 - Android webview shouldOverrideUrlLoading method is not called
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM