마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

웹뷰 goBack()에 관해 질문이 있습니다.

0 추천
 if(mWebview.canGoBack())
                {
                    mWebview.goBack();
                }
로 뒤로가기를 구현하였습니다.
 
다른건 다 문제가 없는데...
 
1. 메인페이지 ->  2. 회원로그인이필요한페이지로 이동후 로그인이 안되어 있으면 -> 3. 로그인 페이지
이렇게 구현된 웹사이트가 있습니다.
로그인 페이지에서 뒤로가기를 누르면 2번 페이지로 가서 바로 또 로그인 페이지로 이동해 버립니다.
웹 사이트의 코드를 수정하면 될것 같았는데,,
 
모바일의 다른 웹브라우저나 PC의 웹브라우저에서는 3에서 뒤로가기를 하면 1로 바로 이동이 됩니다. 
그렇다는건 구현한 웹뷰에 어떠한 설정을 해줘야 한다는 건데 어떻게 해야 하는지 모르겠네요. 검색해도 나오지 않고...
 
대표적으로 m.naver.com에서 로그아웃 된 상태로 사이드 메뉴 열고 "메일"로 이동하면 자동을 로그인 페이지로 이동합니다.
피씨나, 모바일의 브라우저 등에서는 이 상태에서 뒤로 가기 누르면 메인페이지로 이동이 됩니다.
근데 webview에서 goback()하면 로그인 페이지를 호출한 mail페이지로 이동해서 다시 로그인 페이지가 떠버립니다...
 
혹시 이 문제 해결 방법 아시는분 계신가요?
 
추가.
 
WebViewClient의
 
 @Override
            public boolean shouldOverrideUrlLoading

에서 

 view.loadUrl(url);

을 사용할때 생기는 문제인거 같습니다.

새창들을 현재 페이지에서 띄우기위해 

shouldOverrideUrlLoading을 뺄수는 없을것 같은데...

 

해결 방법이 없을까요?

 

이드로이드 (22,930 포인트) 님이 2014년 12월 30일 질문
이드로이드님이 2014년 12월 30일 수정

1개의 답변

0 추천
 
채택된 답변
네.. redirect 의 경우에도 shouldOverrideUrlLoading 메서드에 걸릴건데요.

이때에서 loadUrl(url) 을 해버리니 웹뷰의 히스토리에 기록되어서 페이지 이동이 두번 되는것으로 보입니다.

해결책은... loadUrl 을 제거하시고, return false; 구문만을 남겨서 해보시겠어요?

만약 안된다면 새창으로 뜨는 페이지같은걸 현재의 웹뷰에서 처리하도록 하는 다른 방법을 더 찾아 보셔야 할 것 같네요.
Brann (1,320 포인트) 님이 2014년 12월 30일 답변
이드로이드님이 2014년 12월 31일 채택됨
네, 현재는 그렇게 적용해 두긴했는데, shouldOverrideUrlLoading에서 loadUrl을 꼭 써야해서요, 팝업을 일일이 체크할 수도 없고,,
뭔가 다른 방법이 없을까요?
...