简体   繁体   中英

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.

But these 3 methods are not working, not even printing the logs. 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.

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:

 wv.setWebViewClient(new WebViewClient()); 

This overwrites your custom WebViewClient you set in Activity.onCreate().

You can probably get rid of the whole AsyncTask implementation, too. You can call loadUrl in a WebView in the UI thread with no problems. This might simplify things for you greatly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM