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

webView에서 뒤로가기가 먹히지 않습니다.

0 추천
@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) 
        {
         if((keyCode == KeyEvent.KEYCODE_BACK && mWebView.canGoBack()))
	 {
	  String a = mWebView.getUrl();
	  String b = newURL;
			
          if(a.equals(newURL))
	  {
	   finish();
	  }
	  else
          {
	   mWebView.goBack();
	  }
	 }
	 return super.onKeyDown(keyCode, event);
	}

 

위와 같은 식으로, 기존의 url과 newurl을 비교해서, 페이지 변화가 없으면(url==newurl) 그냥 finish();로 종료하고

변화가 있다면 페이지 뒤로가기를 하고 싶은데요, 

예를 들어 m.naver.com에서 뉴스라던가 이것저것 본 뒤에, goback으로 다시 m.naver.com으로 돌아가

종료하고 싶은데, 뉴스페이지에서 뒤로가기 버튼을 누르면 그냥 종료가 됩니다.

 

anci (19,950 포인트) 님이 2014년 3월 27일 질문
url 을 찍어서 확인해보셨나요?
안녕하세요.
newURL는 제 블로그의 모바일 주소명입니다.
처음에 화면이 띄워질 때 a와 newURL이 같을 줄 알고, 첫 페이지부터 back했는데 if문을 타질 않네요..토스트도 전혀 반응없구요.
else는 두 url이 같지 않을 때, 뒤로가기를 하기 위해 goback()을 썼는데요, 블로그에 들어가서 게시글 줄 아무거나 클릭하고 backpress를 하면 else문에 걸립니다. 주소도 다르구요..

2개의 답변

+1 추천
 
채택된 답변

뭘 묻는지 잘 모르겠어요..

뒤로가기가 먹히지 않는다고 하셨는데 결과적으로 명령문을 수행했는데 원하는 대로 안됬다는 건가요??

if 일때 finish() /  else 일 때 goback()

 

처음에 화면이 띄워질 때 a와 newURL이 같을 줄 알고,  첫 페이지부터 back했는데 if문을 타질 않네요..토스트도 전혀 반응없구요.

url 이 달랐는데 back 했음에도 불구하고 if 문으로 들어오지 않았다?

글쓴님 추측만으로 같을줄알고 첫페이지부터 백했냐 안했냐는 중요하지않아요

결과적으로 if 문을 안탔다면 url 이 달랐다는 거고

a.equals(newURL)  <- 이 녀석이 판별하는 값이 true or false 임을 확인하셔야하고

유알엘 받아오는 부분을 확인해야하구요

 

else는 두 url이 같지 않을 때, 뒤로가기를 하기 위해 goback()을 썼는데요, 블로그에 들어가서 게시글 줄 아무거나 클릭하고 backpress를 하면 else문에 걸립니다. 주소도 다르구요..

요건 결론적으로 url 주소가 달랐다고 하셨으니까 else 문에 걸리는게 맞는거 아닌가요?

왜 url 주소가 다르냐는건가요? 아니면 goback 이 수행이 안됬다는건가요?

초보개발자ㅠ (33,870 포인트) 님이 2014년 3월 27일 답변
anci님이 2014년 3월 28일 채택됨
댓글 감사합니다.
일단 두번째 사항에 대해 답변을 드리자면, if문의 a와 newURL이 다르니 else문으로 오는건 이해했습니다.
else일 경우, mWebView.goBack(); 으로 뒤로가기 기능을 구현하려고 하는데요, 뒤로가기가 보통, 이전 페이지를 말하는거 아닌가요?
A라는 첫 페이지에서 시작해서, backPressed를 누르면 웹이 종료되는건 알겠는데, A에서 게시글을 눌러서 B..C..다른 페이지들로 왔다갔다 하다가, backPressed할 때, 최상단인 A페이지까지 도달하기 전까지 C->B->A 이런식으로 되돌아가게 하려고 했습니다 ^^;
다시 읽어보니 제가 쫌 나쁘게 글을 썻군요 죄송합니다.
근데 이전주소와 비교하는 부분이 필요한가용 '-'?
캔고백만 걸어두면 될것 같은데

참고사이트
http://blog.naver.com/kandroid?Redirect=Log&logNo=20146495988
감사합니다.^^)
해골복잡하게 안하고, 이렇게 하니 되네요..ㅇ<-<
+1 추천
public void onBackPressed(); 를 재정의 해서 체크하시면 해결 될것 같습니다.
단짝 (4,980 포인트) 님이 2014년 3월 27일 답변
...