【问题标题】:How to use go back in sites correct?如何正确使用返回站点?
【发布时间】:2014-05-06 08:18:50
【问题描述】:

我有我的 WebViewFragment,当然我想回到正在浏览的网站,但我遇到了错误:

onBackPressed() 方法没有为 Fragment 类型定义

为什么?我不明白吗? 我究竟做错了什么? 这是我正在使用的完整 webview 代码。

import android.app.Fragment;
import android.content.Intent;
import android.net.Uri;
import android.os.Build;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.webkit.DownloadListener;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class WebViewFragment extends Fragment {
    WebView webView;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {

        // Retrieving the currently selected item number
        int position = getArguments().getInt("position");

        String url = getArguments().getString("url");

        // List of rivers
        String[] menus = getResources().getStringArray(R.array.menus);

        // Creating view corresponding to the fragment
        View v = inflater.inflate(R.layout.fragment_layout, container, false);

        // Updating the action bar title
        getActivity().getActionBar().setTitle(menus[position]);

        //Initializing and loading url in webview
        webView = (WebView)v.findViewById(R.id.webView); 
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadsImagesAutomatically(true);
        webView.getSettings().setBuiltInZoomControls(true);
        webView.loadUrl(url);
        webView.setWebChromeClient(new WebChromeClient());
        webView.setWebViewClient(new WebViewClient(){


            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url){
              view.loadUrl(url);
              return true;
            }


        });
        webView.setDownloadListener(new DownloadListener() {
            public void onDownloadStart(String url, String userAgent,
                    String contentDisposition, String mimetype,
                    long contentLength) {
                Intent intent = new Intent(Intent.ACTION_VIEW);
                intent.setData(Uri.parse(url));
                startActivity(intent);

            }
        });

        return v;
    }
    public void onBackPressed() {
        if(webView.canGoBack()) {
            webView.goBack();
        } else {
            super.onBackPressed();
        }
    }}

如果我正在使用:

public void onBackPressed() {
       Fragment webview = getFragmentManager().findFragmentByTag("webview");
       if (webview instanceof WebViewFragment) {
              boolean goback = ((WebViewFragment)webview).canGoBack();
              if (!goback)
                super.onBackPressed();
       }
 }}

我有错误:

方法 canGoBack() 没有为 WebViewFragment 类型定义

onBackPressed() 方法没有为 Fragment 类型定义

感谢各位大侠的帮助!

【问题讨论】:

  • 从webview你想切换到另一个屏幕..rght?
  • onBackPressed 是一种活动方法,而不是片段方法。看看这里stackoverflow.com/questions/10631425/…
  • 假设我有 google.com,我正在搜索一些东西,在屏幕上我有搜索结果,但是我想回到 google.com。我想在站点中返回 1 步。我是android新手,所以也许我用错了什么?如果我使用 onKeyDown 代码,我会遇到同样的问题:return super.onKeyDown(keyCode, event); 谢谢
  • 我试过The method ...() is undefined for the type Fragment的所有问题
  • 其实你不能直接在fragment里面做。 onBackPressed 可以在 FragmentActivity 中被覆盖。

标签: java android android-fragments webview back


【解决方案1】:

在我的片段中找到对我有用的解决方案。

webView.setOnKeyListener(new OnKeyListener() {
    @Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        if (event.getAction() == KeyEvent.ACTION_DOWN) {
            WebView webView = (WebView) v;
            switch (keyCode) {
                case KeyEvent.KEYCODE_BACK:
                    if (webView.canGoBack()) {
                        webView.goBack();
                        return true;
                    }
                    break;
            }
        }
        return false;
    }
});
return v;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-07
    • 2011-07-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多