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

웹뷰 뒤로가기,ㅠㅠㅠㅠ

0 추천

안드를 시작한지 얼마안되었는데..ㅠㅠㅠ 웹뷰를 실행 하고 클릭후 뒤로가기 할때 메인창까지는 뒤로가기가 적용되도록 코드를 짰는데 메인창 넘어와서 종료시 뒤로가기 막눌러야지 꺼지네요ㅠㅠ

 

    public class WebClient extends WebViewClient {
        @Override
        public boolean shouldOverrideUrlLoading(WebView view, String url) {
            if (mlodeUrl != null && url != null && url.equals(mlodeUrl)) {
                mWebView.goBack();
            } else {
                view.loadUrl(url);
                mlodeUrl = url;

            }
            return true;

        }
    }

    @Override

    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {
            mWebView.goBack();
            return true;
        }
        return super.onKeyDown(keyCode, event);

    }
}

익명사용자 님이 2018년 4월 27일 질문

1개의 답변

0 추천
 
채택된 답변

안녕하세요. 답변 드릴께요.

메인창에서 웹뷰로 넘어왔을꺼에요. 근데 백키를 구현하는 위치가 문제가 있습니다.

전체 적인 구조에서 백키를 관리하는 BaseActivity라는놈을 메인에서도 확장을 하고 있어야하고

즉 extends를 하고 있어야한다는 거죠. 

물론 웹뷰 액티비티에서도요~

 

그러면 위 코드는

webView.setWebViewClient(new WebViewClient() {
    @Override
    public void onPageFinished(WebView view, String url) {
        super.onPageFinished(view, url);
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        if(url.startsWith("market://")){
            Intent intent = new Intent(Intent.ACTION_VIEW);
            intent.setData(Uri.parse(url));
            startActivity(intent);
            return true;
        }else{
            super.shouldOverrideUrlLoading(view, url);
            return false;
        }
    }
});

뭐 이런식으로 수정이 되겠지요?

위에껀 제 소스니 님소스 붙히면 되겠습니다.

 

쭈쭈총각 (17,750 포인트) 님이 2018년 5월 1일 답변
감사합니다. 덕분에 해결됬습니다ㅠㅠ 추가로 여기서 백버튼 2번해서 종료를 하고싶으면 onPageFinished   이부분을 수정해야합니까??
그건 backkey 두번 종료해서 앱 종료하는 말그대로 검색하시면
핸들러 방식으로 flag 값으로 sleep 주어서 컨트롤하는 예제가 많이 나올겁니다.
...