我正在完成我的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上并按下后退按钮时,应用程序崩溃了......有什么想法吗?
答案 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