Android 如何在片段内的WebView中添加返回功能?(副本)

Android 如何在片段内的WebView中添加返回功能?(副本),android,Android,当前代码不工作,我想在webview中添加goback功能,当我在mobile中按back按钮时。我怎样才能解决它?下面是我当前的片段。引导我:)发现了一些关于相同的问题,但没有得到答案 解决了!这就是我发现的 ///我的片段 } 公共静态WebView getWebView(){ 返回webView; } } ---------------------- ///我的活动 @凌驾 public void onBackPressed(){ WebView WebView=fbfragment.g

当前代码不工作,我想在webview中添加goback功能,当我在mobile中按back按钮时。我怎样才能解决它?下面是我当前的片段。引导我:)发现了一些关于相同的问题,但没有得到答案

解决了!这就是我发现的

///我的片段
}
公共静态WebView getWebView(){
返回webView;
}
}
----------------------
///我的活动
@凌驾
public void onBackPressed(){
WebView WebView=fbfragment.getWebView();
if(webView.canGoBack()){
webView.goBack();
}否则{
Builder Builder=新建AlertDialog.Builder(此);
builder.setTitle(“退出”).setMessage(“确实要退出吗?”).setCancelable(false)
.setPositiveButton(“是”,新的DialogInterface.OnClickListener(){
public void onClick(DialogInterface对话框,int-id){
完成();
}
}).setNegativeButton(“否”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
}
});
AlertDialog alert=builder.create();
警报。可设置可取消(错误);
alert.show();
}
}
}
尝试以下解决方案

在activity类的onBackPressed方法中,调用片段的Back()方法

在片段的Back()方法中,调用getActivity().onBackPressed();像这样

    public static void Back() {
        if (webView.canGoBack()) {
            webView.goBack();
        } else{
            AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
            builder.setTitle("Exit").setMessage("Are you sure you want to exit?").setCancelable(false)
            .setPositiveButton("Yes", new DialogInterface.OnClickListener() {
                public void onClick(DialogInterface dialog, int id) {
                    getActivity().finish();
                }
            }).setNegativeButton("No", new DialogInterface.OnClickListener() {

                @Override
                public void onClick(DialogInterface dialog, int id) {
                }
            });

           AlertDialog alert = builder.create();
           alert.setCancelable(false);
           alert.show();
        }
    }
覆盖活动的onBackPressed()

@Override
public void onBackPressed()
{ 
 //fbFragment is an instance of your FBFragment
 WebView webView = fbFragment.getWebView();

 if (webView.canGoBack()) 
        {
            webView.goBack();

        } else{
          super.onBackPressed();

}

}
///这是在你的碎片里面。注意getWebview方法

package XXXX.XXXXXXXXXX.XXXXXXXXXXXX.com;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import XXXX.XXXXXX.XXXXXX..R;
import XXXX.XXXXXX.XXXXXX..R.id;
import XXXX.XXXXXX.XXXXXX.R.layout;


public class FBFragment extends Fragment {

    private static final String target_url = "https://XXXXXXXXXX.com/";
    private static WebView webView;
    final Context context = getActivity();
    View rootView;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.XXXXX_main, container, false);



        webView = (WebView) rootView.findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);

        ...........CONT...










        .......CODE ENDS WITH..........

            }
        });
        CookieSyncManager.createInstance(getActivity());
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        CookieSyncManager.getInstance().startSync();

        webView.loadUrl(target_url);

        return rootView;
    }

    @JavascriptInterface
    public void processVideo(final String vidData, final String vidID) {




    }
public void getWebView(){
  return webview;  
 }

Back()函数在哪里触发的?你叫它什么?活动更新了,兄弟。请检查这些错误。。FBFragment类型的方法onBackPressed()必须重写或实现超类型方法。该类型的方法onBackPressed()未定义Fragment@Ekundayo祝福Funminiyi如何在片段中重写onBackPressed方法?Fragment没有onBackPressed()方法。抱歉,我的意思是您应该重写活动的方法。我现在将编辑代码。Bro,现在我得到了这个错误“不能从myFragment类型静态引用非静态方法Back()”:(现在我得到了两个错误,在片段中显示“不能从myFragment类型静态引用非静态方法getActivity()”,在活动中显示“不能从myFragment类型静态引用非静态方法getActivity()”)类型myFragment的未定义“:(@ekundayi,现在再次显示1中的两个错误。[WebView WebView=fbFragment.getWebView();]“fbFragment无法解析”2。[public void getWebView(){return WebView;]“WebView无法解析为变量”:(
package XXXX.XXXXXXXXXX.XXXXXXXXXXXX.com;

import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.CookieManager;
import android.webkit.CookieSyncManager;
import android.webkit.JavascriptInterface;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import XXXX.XXXXXX.XXXXXX..R;
import XXXX.XXXXXX.XXXXXX..R.id;
import XXXX.XXXXXX.XXXXXX.R.layout;


public class FBFragment extends Fragment {

    private static final String target_url = "https://XXXXXXXXXX.com/";
    private static WebView webView;
    final Context context = getActivity();
    View rootView;



    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.XXXXX_main, container, false);



        webView = (WebView) rootView.findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);

        ...........CONT...










        .......CODE ENDS WITH..........

            }
        });
        CookieSyncManager.createInstance(getActivity());
        CookieManager cookieManager = CookieManager.getInstance();
        cookieManager.setAcceptCookie(true);
        CookieSyncManager.getInstance().startSync();

        webView.loadUrl(target_url);

        return rootView;
    }

    @JavascriptInterface
    public void processVideo(final String vidData, final String vidID) {




    }
public void getWebView(){
  return webview;  
 }