2015-01-02 57 views

回答

0

您應該WebViewClient覆蓋WebViewClient

的shouldOverrideUrlLoading方法
@Override 
public boolean shouldOverrideUrlLoading (WebView view, String url) { 

    if(flag) { 

      URL aURL = new URL(url); 
      URLConnection conn = aURL.openConnection(); 
      conn.connect(); 
      InputStream is = conn.getInputStream(); 
      // read inputstream to get the json.. 
      ... 
      ... 
      return true; 
    } 

    return false 
} 

@override 
public void onPageFinished (WebView view, String url) { 
    if (url contains "form.html") { 
     flag = true; 
    } 
} 
+0

我應該在哪裏聲明變量標誌? –

+0

您的活動 – Anjali

+0

我可以將默認值的變量聲明爲「false」嗎? –

0

,而不是調用網絡呼叫,使用一個接口,並盡一切網絡操作中的AsyncTask。第二件事情pageFinish不止一次被調用,所以不需要標誌,但得到url,然後驗證它是否正確或在回調方法中。

要將customWebClient中的數據傳遞給活動,請創建一個接口並在活動中實現它,並使用它將shouldOverrideurlLoading中的url傳遞給活動。

public interface ICallback{ 
    public void passData(String url); 
} 

public class myActivity extends Activity implements iCallback{ 
    public void passData(String url){ 
     //validate url 
     //call async task to get result 
    } 
} 

public CustomWebViewClient extends WebViewClient{ 

    iCallback mCallback; 

    public CustomWebViewClient(Context context, ICallback callback){ 
     mCallback = callback; 
    } 

    @Override 
    public boolean shouldOverrideUrlLoading (WebView view, String url) { 
     mCallback.passData(url); 
     return true; 
    } 
    return false 
}