2013-10-04 79 views
0

我在以下問題中堆棧!我解析網站,這裏是我的近似代碼:通過WebView.goBack執行url

public class MainActivity extends Activity { 
String CurURL = ""; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    webview.setWebViewClient(new ForumWebViewClient()); 
    new ParseMyPageTask().execute(url); 
    } 
    private class ForumWebViewClient extends WebViewClient { 
    public boolean shouldOverrideUrlLoading(WebView webview, String url) { 
     new ParseMyPageTask().execute(url); 
     return true; 
    } 
    } 

    public class ParseMyPageTask extends AsyncTask<String, Void, String> { 
    @Override 
    protected String doInBackground(String... params) { 
        *JSoup work* 
     return result; 
      } 
    @Override 
    protected void onPostExecute(String result) { 
      webview.loadDataWithBaseURL("http:..", result, "text/html", "UTF-8", CurURL); 
    } 
    } 
    @Override 
public void onBackPressed() { 
    if (webview.canGoBack()) { 
     webview.goBack(); 
     return; 
    } 
    super.onBackPressed(); 
} 
} 

我應該爲AsyncTask在後退按鈕按下後執行url嗎?現在它按原樣返回頁面,而不是分析。

回答

1

您需要操縱WebBackForwardList來加載您的URL,而不是默認情況下由WebView自動緩存的URL。

你做到這一點通過重寫WebView.goBack()

@Override 
    public void goBack() { 
    WebBackForwardList temp = copyBackForwardList(); 
    for (int i=0; i<temp.getSize(); i++) { 
     WebHistoryItem item = temp.getItemAtIndex(i); 
     // do whatever you want here... 
    } 

    // do whatever you want here... 
    super.goBack(); 
    }