【问题标题】: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;
        }
    };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-11-29
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多