这应该很简单,但我找不到合适的解决方案......
我有一个DialogFragment,它包含一个包含WebView的LinearLayout。当用户在WebView中导航时,我希望他/她能够使用后退按钮返回。当他/她到达起始页面时(即不能再返回),后退按钮应关闭对话框。
我尝试了setCancelable(false)并在DialogFragments根视图(由inflate()返回的那个视图上摆弄OnKeyListener,但它似乎永远不会被调用后退按钮。我不想要涉及Activity的onBackPressed(),如果可能的话,它应该由DialogFragment处理......
答案 0 :(得分:0)
到目前为止,我找到的解决方案是设置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;
}
};