【问题标题】:DialogFragment with WebView - Handling back button?带有 WebView 的 DialogFragment - 处理后退按钮?
【发布时间】:2014-04-24 09:52:56
【问题描述】:
这应该很简单,但我就是找不到可行的解决方案...
我有一个 DialogFragment,它由一个包含 WebView 的 LinearLayout 组成。当用户在 WebView 中导航时,我希望他/她能够使用后退按钮返回。当他/她到达起始页面时(即不能再返回),返回按钮应该关闭对话框。
我尝试了 setCancelable(false) 并在 DialogFragments 根视图(由 inflate() 返回的那个)上摆弄一个 OnKeyListener,但它似乎从来没有被调用后退按钮。我不想必须涉及到 Activity 的 onBackPressed(),如果可能的话,应该由 DialogFragment 处理...
【问题讨论】:
标签:
android
webview
back-button
android-dialogfragment
【解决方案1】:
到目前为止,我找到的解决方案是设置WebView的OnKeyListener,如下所示:
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.dialog_fragment_layout, container, false)
webView = (WebView) v.findViewById(R.id.webView);
webView.setOnKeyListener( keyListener );
return v;
}
OnKeyListener keyListener = new OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if( keyCode == KeyEvent.KEYCODE_BACK && event.getAction() == KeyEvent.ACTION_DOWN ){
if( webView.canGoBack() ){
webView.goBack();
return true;
}
}
return false;
}
};