티스토리 뷰

안드로이드에서 웹뷰를 적용하는 강좌는 지난번에 올렸었다. 

뒤로가기 버튼까지 처리를 했지만, 사용하다 보면 한가지 문제가 발생한다. 


웹 페이지에서 다른 페이지로 이동한 후, 내부적으로 여러번 리다이렉트가 발생할 경우이다. 

이때, 기존의 방식대로 뒤로가기 버튼을 처리하면 원하는대로 동작하지 않는다. 

바로 이전 페이지로 이동하기 때문에 다시 현재 보고 있는 페이지로 돌아오게 되는 것이다. 



이런 문제를 해결하기 위해서 다음과 같은 방식을 사용해봤다. 

현재 URL을 변수에 저장하고 새로운 URL이 로딩되었는데 아직도 현재 URL이면 뒤로 이동하도록 처리하는 것이다. 

WebViewClient를 상속한 클래스의 shouldOverrideUrlLoading 함수에서 처리하면 된다. 


기존 소스에서는 단순히 view.loadUrl(url) 만 처리했었지만, 

내부적으로 URL을 리다이렉트하는 경우를 대비해서 수정을 한 것이다. 


나머지는 mCurrentUrl이라는 변수를 멤버 변수로 선언하고 onCreate에서 null값을 할당해 준 것만 차이가 있다. 

전체 액티비티 소스는 다음과 같다. 

댓글
댓글쓰기 폼