웹뷰로 뒤로가기를 구현했습니다.
완벽하게 구현되었는줄 알고 넋놓고 있다가 뒤통수 맞았네요.ㅜㅜ
문제가 발생했습니다.
첫번째 페이지에 a, b, c, d... 등 이렇게 링크가 쭉 있습니다.
여기서 b를 클릭해서 해당페이지로 넘어간 후에 뒤로가기 버튼으로 다시 첫번째 페이지로 돌아오면,
방금 클릭해서 넘어갔던 b 링크가 클릭되지 않습니다.
b가 아닌 다른 a, c, d...등을 클릭하면 해당 페이지로 넘어갑니다.
다시 뒤로가기로 돌아와서 방금 클릭했던 링크를 클릭하면 링크가 안먹습니다.
대신 다른 링크들은 정상적으로 동작하구요.
한마디로 뒤로가기로 돌아오면 방금 방문했던 페이지만 링크가 동작하지 않습니다.
소스는 아래와 같습니다. 도대체 이유가 뭘까요?
public class MainActivity extends AppCompatActivity
{
WebView webView;
String mCurrentUrl;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mCurrentUrl = null;
webView = (WebView) findViewById(R.id.webView);
webView.setWebViewClient(new MyWebViewClient());
WebSettings settings = webView.getSettings();
settings.setJavaScriptEnabled(true);
webView.loadUrl("http://m.naver.com");
}
private class MyWebViewClient extends WebViewClient
{
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(mCurrentUrl != null && url != null && url.equals(mCurrentUrl)) {
webView.goBack();
} else {
view.loadUrl(url);
mCurrentUrl = url;
}
return true;
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK) && webView.canGoBack()) {
webView.goBack();
return true;
}
return super.onKeyDown(keyCode, event);
}
}