MARYABLE

[Android] WebView in Dialog (with Fragment) 본문

Android Dev/Android

[Android] WebView in Dialog (with Fragment)

서메리 2020. 5. 19. 13:11

Fragment 화면에서 WebView를 Dialog 형태로 띄우기

 

AlertDialog.Builder alert = new AlertDialog.Builder(getContext());
WebView wv = new WebView(getContext());
wv.loadUrl(your url);
wv.setWebViewClient(new WebViewClient() {
  @Override
  public boolean shouldOverrideUrlLoading(WebView view, String url) {
    if (view.canGoBack()) {
      view.loadUrl(url);
      return true;
    }
    return false;
});
alert.setView(wv); // dialog에 WebView를 세팅
alert.setNegativeButton(R.string.close, (dialog, which) -> dialog.dismiss());
alert.setOnKeyListener((dialog, keyCode, event) -> { // WebView에서 back button을 이용해 back history 할 수 있도록 함
  if (event.getAction() != KeyEvent.ACTION_DOWN)
    return true;
  if (keyCode == KeyEvent.KEYCODE_BACK) {
    if (wv.canGoBack()) { // WebView에 history가 있으면 WebView.goBack()
      wv.goBack();
    } else { // history가 없으면 dialog 닫기
      dialog.dismiss();
    }
    return true;
  }
  return false;
});
alert.show();
Comments