2014-09-30 126 views
3

这里有一个链接,是5秒重定向到另一个网页,我怎么能重定向 这里之前做出的延迟是一个例子链接之前:http://s.spynetstation.com/m/Logistics/Logistics%20-%20Medical%20History%20NHSDL09,%202007/05%20Logistics%20-%20Safe%20On%20My%20Side.mp3 Сode延迟重定向页面

public void ShowTrack(String smetaout,String stitleout){ 
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle(stitleout); 

    WebView wv = new WebView(this); 

    wv.setWebViewClient(new WebViewClient() { 

     @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) { 
      Log.d("My Webview", "shouldOverrideUrlLoading"+urlNewString); 
       if (!loadingFinished) { 
        redirect = true; 
       } 

      loadingFinished = false; 
      view.loadUrl(urlNewString); 
      Log.d("My Webview", urlNewString); 
      return false; 
      } 

      public void onPageStarted(WebView view, String url) { 
       Log.d("My Webview", "onPageStarted"+url); 
       loadingFinished = false; 

      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       if(!redirect){ 
        loadingFinished = true; 
       } 

       if(loadingFinished && !redirect){ 

       } else{ 
        redirect = false; 
       } 
       Log.d("My Webview", "onPageFinished"+url); 
      } 

    }); 
    wv.loadUrl(smetaout); 
    alert.setView(wv); 
    alert.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.dismiss(); 
     } 
    }); 
    alert.show(); 
} 

回答

1

.loadUrl之前插入任何延迟(定时器,异步等)。例如:

new CountDownTimer(5000, 5000) 
{ 
    public void onTick(long millisUntilFinished) {} 
    public void onFinish() 
    { 
     view.loadUrl(urlNewString); 
    } 
}.start();     
+0

不幸的是现在获得如下:页面被请求,并立即通过终点线,因为页面是空白的,我需要这样的页面请求等待5秒,重定向,它应该加载并返回到此页面已经。这是如何实现的? – madcrinkle 2014-09-30 08:14:44

+0

@BatuhanC与ProgressDialog解决方案呢? – 2014-09-30 08:23:41

+0

也尝试在onPageStarted – 2014-09-30 08:32:11

1

试试这个:

public void ShowTrack(String smetaout,String stitleout){ 
    AlertDialog.Builder alert = new AlertDialog.Builder(this); 
    alert.setTitle(stitleout); 

    WebView wv = new WebView(this); 

    // Progress dialog starts 
    ProgressDialog progressDialog = ProgressDialog.show(YourActivity.this, "", "Loading... ",true ,true); 

    wv.setWebViewClient(new WebViewClient() { 

     @Override 
     public boolean shouldOverrideUrlLoading(WebView view, String urlNewString) { 
      Log.d("My Webview", "shouldOverrideUrlLoading"+urlNewString); 
      if (!loadingFinished) { 
       redirect = true; 
      } 

      loadingFinished = false; 
      view.loadUrl(urlNewString); 
      Log.d("My Webview", urlNewString); 
      return false; 
     } 

     public void onPageStarted(WebView view, String url) { 
      Log.d("My Webview", "onPageStarted"+url); 
      loadingFinished = false; 

     } 

     @Override 
     public void onPageFinished(WebView view, String url) { 

      final Handler handler = new Handler(); 
      handler.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        // Do something after 5s = 5000ms 
        progressDialog.dismiss(); 
       } 
      }, 5000); 

      if(!redirect){ 
       loadingFinished = true; 
      } 

      if(loadingFinished && !redirect){ 

      } else{ 
       redirect = false; 
      } 
      Log.d("My Webview", "onPageFinished"+url); 
     } 

    }); 
    wv.loadUrl(smetaout); 
    alert.setView(wv); 
    alert.setNegativeButton("Close", new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int id) { 
      dialog.dismiss(); 
     } 
    }); 
    alert.show(); 
} 

我希望这是你想要的。

+0

不幸的是现在得到如下:页面被请求,并立即通过终点线,因为页面是空白的,我需要这样的页面请求等待5秒,重定向和它应该已经加载并返回到此页面。这是如何实现的? – madcrinkle 2014-09-30 08:09:55