方法" onBackPressed"没有在WebView Fragment上工作

时间:2015-08-10 05:50:05

标签: android android-fragments webview

我正在完成我的WebViev应用程序,但是当我按下"返回"按钮关闭应用程序。我需要回到WebView上的前一页,但我得到了#34;无法解决mehtod onBackPressed();"错误。

片段代码:

package com.lfcchile;


import android.app.Activity;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.WebView;


/**
 * A simple {@link Fragment} subclass.
 */
public class MyFragment4 extends Fragment {
private WebView webView;
public MyFragment4() {
    // Required empty public constructor
}


@Override
public void onAttach(Activity activity) {
    super.onAttach(activity);
}

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
}



@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View mainView = (View) inflater.inflate(R.layout.fragment_my_fragment1, container, false);
    //webView.getSettings().setBuiltInZoomControls(true);
    //webView.setInitialScale(50);
    //webView.getSettings().setPluginsEnabled(true);
    WebView webView = (WebView)mainView.findViewById(R.id.webview);
    webView.setWebViewClient(new MantenerDominioWeb());
    webView.getSettings().setJavaScriptEnabled(true);
    webView.getSettings().setBuiltInZoomControls(false);
    webView.getSettings().setSupportZoom(false);
    webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    webView.getSettings().setAllowFileAccess(true);
    webView.getSettings().setDomStorageEnabled(true);
    webView.canGoBack();
    webView.goBack();
    webView.loadUrl("http://www.lfcchile.com/sitios-interes/");
    return mainView;
}

@Override

public View onBackPressed() {
    if(webView.canGoBack()) {
        webView.goBack();
    }

    else {
       super.onBackPressed();
    }
}


@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
}


@Override
public void onDestroy() {
    super.onDestroy();
}


@Override
public void onDetach() {
    super.onDetach();
}

}

当我将onBackPressed放在MainActivity上并按下后退按钮时,应用程序崩溃了......有什么想法吗?

3 个答案:

答案 0 :(得分:3)

由于你正在使用片段,你必须得到后面的键触摸事件...按照下面的代码作为参考......

mainView.setOnKeyListener(new View.OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getAction() == android.view.KeyEvent.ACTION_DOWN) {
            if ((keyCode == android.view.KeyEvent.KEYCODE_BACK)) {
                if(webView!=null)
                {
                  if(webView.canGoBack())
                  {
                    webView.goBack();
                  }
                }
            }
        }
        return true;
    }
});

要获取触摸的键事件,您必须覆盖onkeylistener ...

答案 1 :(得分:2)

片段没有backPressed。您必须使用其容器活动的backPressed。在你的活动中覆盖onBackPressed&使用getActivity.onBackPressed()从片段中调用它。

答案 2 :(得分:2)

覆盖onKeyDown而不是onBackPressed。不必要 。但这对我有用

iptables  -t nat -A PREROUTING -p tcp --destination-port 443 -j REDIRECT --to-port 8080
iptables -t nat -A PREROUTING -p tcp --destination-port 80 -j REDIRECT --to-port 8080