2013-10-04 37 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(); 
    }