2013-09-04 1 views
0

URL이 http://www.site.com/mob/ (기본적으로 모바일에 최적화 된 웹 페이지) 인 WebView에로드되는 다소 구체적인 웹 페이지가 있습니다. 이 웹 페이지에는 25 개의 기사 만 표시되며 하단에는 "기타 기사"버튼이 있습니다.이 URL을 WebView에로드하는 방법은 무엇입니까?

사용자가 누를 때 http://www.site.com/Web/MobHomeItems.aspx?page=N (N은 2, 3, 4 ...) 인 URL을 포착하고 다른 25 개의 항목이 동일한 화면에로드되었습니다.

지금, 나는 몇 가지 기사를 클릭하고 문서 세부로 이동, 나중에로드 된 WebView잊어 얼마나 많은 기사, 뒤로 키를 통해 페이지로 돌아가서 간단하게 (25 개) 표시 기사의 기본 페이지를로드 할 때 . 그가 100 번째 기사를 읽었을 때 이것이 얼마나 실망 스러울 지 상상해보십시오.

WebClientWebChromeClient에서 많은 방법을 재정의하려고 시도했지만 지금까지 "기타 기사"버튼을 통해로드 된 N 개의 페이지를로드 할 수 없었습니다. 예를 들어, 처음에는 이것이 도움이 될 것이라고 생각했지만 그렇지 않았습니다. 기본적으로 메인 페이지에로드 한 다음 문서 세부 사항에서 반환에, 단순히이 URL을로드 웹뷰에게 한 페이지 수를 기억 -

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

      //http://www.site.com/Web/MobHomeItems.aspx?page=2 

      if (url.contains("?page=")) { 

       //save this URL for later and on return from 
       // article details, pass it to LoadResource() 

      super.onLoadResource(view, url); 
     } 

는 그럼 난 다른 방법으로 유사한 접근을 시도했다.

아무도 도와 줄 수 있습니까? 로드 된 페이지를 기본 페이지에 추가하는 방법은 무엇입니까? 아마 여기서 JavaScript을 사용해야할까요?

추신. 로드하는 언급 된 URL http://www.site.com/Web/MobHomeItems.aspx?page=N은 콘크리트 페이지를 WebView에만로드하고이 N 번째 페이지를 기본 페이지에 추가하지 않으므로 도움이되지 않습니다.

@Raghunandan 물었다, 나는이 1 페이지 (?page=1)로 다시로드 문제가 발생하지 않습니다

편집 할 수 있습니다. 기사 세부 정보에서 뒤로 버튼을 누르면 기본값입니다. 기사 세부 사항을 누르기 전에 사용자가 있던 페이지에 을로드하고 싶습니다. 그가 ?page=100에 있었다면 해당 페이지로 다시로드하고 싶습니다. 25x100 기사를 열어보고 싶습니다. 다시 말하지만 기본값은 항상 "열 25 기사 또는 ?page=1 또는 http://www.site.com"입니다.

+1

100 번째에서 1 번째 기사로 이동 하시겠습니까? – Raghunandan

+0

아니요. 사용자가 100 번째 페이지에 있었고 다음 페이지 (기사 세부 정보)로 이동 한 다음 뒤로를 누르면 100 번째 페이지로 다시로드하고 싶습니다. 기본값은 첫 번째 페이지로 다시로드하는 것입니다. 더 분명한? – sandalone

답변

1

WebViewClient의 shouldOverrideUrlLoading 메서드를 재정의합니다. 이 같은

:

public boolean shouldOverrideUrlLoading (WebView view, String url) { 
    if (url is kind of article detail) { 
     WebView newOne = new WebView(); // create a new Webview for displaying the details. 
     view.setVisibility(View.INVISIBLE); // hiding current page (article list) 
     return true; // To tell the WebView we have process this url. 
    } 
    return false; 
} 
  1. 사용자는 기사의 세부 사항 중 하나 개 링크를 클릭합니다.
  2. shouldOverriderUrlLoading이 트리거됩니다.
  3. URL을 열기 위해 하나의 새로운 WebView를 만들었습니다.
  4. 현재 페이지를 숨기기
  5. 사용자가 키를 다시 클릭하여 이전 문
을 newOne 웹보기가 다음 이전 웹보기 visible.The 기사 목록이 즉시 표시됩니다 만들 닫고 남아
  • 사용자 읽기 artical

    .

  • +0

    흠,이 소리는 더러운 트릭과 같습니다. 나는 이것을 더 깨끗한 방법으로하는 것이 더 나을지라도 지금 시도 할 것이다. – sandalone

    +0

    웹 앱의 대부분은 이와 같이 수행되었습니다. 트릭이 아닙니다. 믿으십시오 – fengshihao

    +0

    이것은 실제로 작동합니다 – sandalone

    0

    다른 방법이 있습니다.

    WebSettings에는 개인 메서드 "setPageCacheCapacity"가 있으며 기본값은 0입니다.이 값을 5로 설정할 수 있습니다.

    Java의 리플렉션을 사용하여이 메소드에 액세스 할 수 있습니다.

    이 방법으로 WebView에서 둘 이상의 문서를 캐시 할 수 있습니다. 다른 단어. 사용자가 뒤로 키를 누르면 WebView가 이전 문서로 돌아갑니다.

    +0

    나는 당신이 말하는 것을 이해하지 못합니다. – sandalone

    관련 문제