2011-10-13 2 views

답변

30

워드 프로세서에서 답을 찾을 수 ...

WebBackForwardList mWebBackForwardList = mWebView.copyBackForwardList(); 
String historyUrl = mWebBackForwardList.getItemAtIndex(mWebBackForwardList.getCurrentIndex()-1).getUrl(); 
+0

작동하지만 실수가 있습니다. 당신이 PageA에 있다면 당신은 PageB로갑니다. 이제 뒤로 버튼을 누르면 페이지 A로 돌아갑니다. 그러나 이제 다시 버튼을 누르면 페이지 B가 이전 페이지이므로 페이지 B로 다시 이동합니다. 따라서 두 페이지 사이를 영원히 반복합니다. –

+1

어쨌든 역사를 사용하여 페이지를 탐색하지 않았으므로 제 경우에는 문제가되지 않습니다. 로깅 목적으로 만 필요했습니다. backForwardList를 사용하여 탐색 하시겠습니까? 그렇다면 왜? 안드로이드 브라우저는 기본적으로 그것을 돌볼 것입니다, wouldnt? –

+0

아주 간단한 브라우저를 구현해야했습니다. 나는 이것을 대신 사용했다 :'if (browser.canGoBack()) {browser.goBack()} else {finish()}'이것은 잘되었다. –

0

방문한 URL의 스택 (목록)은 onPageFinished()에 추가하고 사용자가 백업 할 때 제거하여 유지할 수 있습니다.

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
    switch (keyCode) { 

    case KeyEvent.KEYCODE_BACK: 
        if (urls.size() == 1) { 
      finish(); 
      return true; 
     } else if (urls.size() > 1) { 
      urls.remove(0); 

      // load up the previous url 
      loadUrl(urls.get(0)); 

      return true; 
     } else 
          return false; 
    default: 
     return super.onKeyDown(keyCode, event); 
    } 
} 
+0

onPageFinished 경향이 호출되는 여러 :

private List<String> urls = new ArrayList<String>(); @Override public final void onPageFinished(final WebView view,final String url) { urls.add(0, url); super.onPageFinished(view, url); } 

후 활동에 다시 키 트랩

즉, 페이지 당 시간, 특히 다시 그리기 (예 : 커서 깜박임) 또는 iframe이있는 경우. shouldOverrideUrlLoading은 새로운 URL에 대해서만 호출되지만 iframe에는 호출되지 않습니다. 따라서 가장 좋은 방법은 http://stackoverflow.com/questions/3149216/how-to-listen-for-a-webview-finishing-loading-a-url-in에 설명 된대로 onPageFinished 및 shouldOverrideUrlLoading을 함께 사용하는 것입니다. -android – Torid

+0

네, 맞습니다. URL이 이미 목록 (제로 위치)에 있는지 확인하고이 경우 URL을 추가하지 않아야합니다. – tarrant

+0

나는 내 자신을 분명히하지 않았다고 생각한다. ** 나는 ** 수동으로 URL을 저장하고 싶지 않다. webview는 히스토리 스택을 유지합니다. 난 그냥 마지막으로로드 된 URL을 원한다. –