【问题标题】:Go Back To Previous Page if Back is Pressed in WebView如果在 WebView 中按下返回,则返回上一页
【发布时间】:2015-04-24 15:36:18
【问题描述】:

我是 Android 开发的初学者,这是我的项目: 我想回到 WebView 中的上一页。

当我运行代码时,这些是错误: 1. Error:(67, 5) 错误:方法没有覆盖或实现超类型中的方法 2. Error:(75, 18) error: cannot find symbol method onBackPressed() 3. Error:(70, 13) error: cannot find symbol variable view

package com.veereshc.veer.resultapp;

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;
import android.webkit.WebViewClient;
import android.view.KeyEvent;


import com.veereshc.veer.resultapp.dummy.DummyContent;
public class WebpageDetailFragment extends Fragment {

public static final String ARG_ITEM_ID = "item_id";


private DummyContent.DummyItem mItem;


public WebpageDetailFragment() {
}

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

    if (getArguments().containsKey(ARG_ITEM_ID)) {

        mItem = DummyContent.ITEM_MAP.get(getArguments().getString(ARG_ITEM_ID));
    }
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.fragment_webpage_detail, container, false);


    if (mItem != null) {
        WebView view = (WebView) rootView.findViewById(R.id.detail_area);
        view.setWebViewClient(new WebViewClient());
        view.loadUrl(mItem.url);
    }

    return rootView;
}

@Override
public void onBackPressed(){
    if(view.canGoBack()){
        view.goBack();

    }
    else
    {
        super.onBackPressed();
    }
}

}

【问题讨论】:

  • 第 67 行是什么
  • 什么是视图对象?它不是全局变量
  • 如何定义为全局变量?
  • 在这一行旁边定义WebView view public static final String ARG_ITEM_ID = "item_id"; 这将在类级别声明它是全局变量
  • 如何将 onBackPressed() 链接到返回按钮?

标签: android webview


【解决方案1】:

WebView中按返回键返回上一页有两种方式:
首先,覆盖onBackPressed()

@Override
public void onBackPressed() {
    // TODO Auto-generated method stub
    if (webview.canGoBack()) {
        webview.goBack();
        return;
    } else {
        super.onBackPressed();
    }
}


第二个,覆盖onKeyDown

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
    // TODO Auto-generated method stub
    if (keyCode == KeyEvent.KEYCODE_BACK && webview.canGoBack()) {
        webview.goBack();
        return true;
    }
    return super.onKeyDown(keyCode, event);
}

【讨论】:

  • 错误:(55, 26) 错误: onBackPressed() 找不到符号方法
  • 如何将 onBackPressed() 链接到返回按钮?
  • Fragment 中没有onBackPressed()onKeyDown,尽量不要使用Fragment,我建议,尝试Activity
  • 所以在活动中我可以在 WebView 中选择项目,例如 1. Facebook 2.Twitter 3.Youtube 吗?
  • 是的,你可以做任何你在Fragment做的事情
【解决方案2】:

像这样使用 onBackPressed 方法

@Override
public void onBackPressed() {
    if (myWebView.canGoBack()) {
        myWebView.goBack();
    } else {
        super.onBackPressed();
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-08-29
    • 2016-10-02
    • 2016-10-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    相关资源
    最近更新 更多