笔记64 | 个人项目“易来”开发记录《二》处理Fragment中返回的问题

需求描述

问题:

一个WebView放在Fragment中,我们都知道webView有一个goBack()方法,可以通过该方法对网页进行后退处理,由于Fragment本身并没有监听onBackPressed的方法,又处于一个Activity中,Activity除又对后退进行了3秒确定退出处理,所有导致

  1. Fragment中的WebView无法进行goBack();
需求:

需要在Fragment中监听到返回键,当WebView可以后退网页的时候,进行后退网页,当没有可后退的网页时(首页状态),点击返回调Activity中的onBackPressed方法;

处理方案

这位大神的方案大神讲得通俗易懂,对我来说难度稍大,实现后再慢慢消化。。。 MianActivity:

public class Main extends FragmentActivity implements OnCheckedChangeListener,Framelayout3.BackHandLerInterface{

public View onCreateView(LayoutInflater inflater, ViewGroup container,
            Bundle savedInstanceState) {
...
if (!(getActivity() instanceof BackHandLerInterface)) {
            throw new ClassCastException("Hosting activity must implement BackHandlerInterface");  
        }else{
            backHandLerInterface = (BackHandLerInterface) getActivity();
        }
}
...
@Override
    public void onStart() {
        // TODO Auto-generated method stub
        super.onStart();
        backHandLerInterface.setSelectedFragment(this);
    }
...
private Framelayout3 framelayout3;
private long mTickForShow;
    @Override
    public void onBackPressed() {
        if (framelayout3 == null || !framelayout3.onBackPressed()) {
            backPress();
        }
    }

    public void backPress(){
        if (SystemClock.uptimeMillis()-mTickForShow<3000) {
            finish();
        }else{
            showToast(getString(R.string.gameover));
        }
        mTickForShow=SystemClock.uptimeMillis();
    }
...
    @Override
    public void setSelectedFragment(Framelayout3 backHandledFragment) {
        this.framelayout3 = backHandledFragment;
    }
}

Fragment:

public boolean onBackPressed() {
        if (webView.canGoBack()) {
            webView.goBack();
            return true;
        }else{
            return false;
        }
    }
...
protected BackHandLerInterface backHandLerInterface;

    public interface BackHandLerInterface{
        public void setSelectedFragment(Framelayout3 backHandledFragment);
    }


原文发布于微信公众号 - 项勇(xiangy_life)

原文发表时间:2018-01-17

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏懒人开发

CoordinatorLayout使用(一):Behavior简单理解

CoordinatorLayout出来很久了,时间关系,一直没有怎么弄过 看见简友的描述 r17171709 的 http://www.jianshu.c...

914
来自专栏青蛙要fly的专栏

Android技能树 — PopupWindow小结

关于下拉选择框,估计大家都有很多选择,我在以前的文章:项目需求讨论-HyBrid模式需求改造 上写过下拉框选择这一块,正好用的Spinner。

871
来自专栏GIS讲堂

用百度地图API打造方便自己使用的手机地图

有钱人咱就不说了,因为偶是个穷银……因为穷,所以去年买的Huawei C8650+到现在还在上岗,对于没有钱买好的配置的手机的童鞋来说,类似于百度,谷歌,高德等...

3234
来自专栏Android小菜鸡

popupWindow的封装与学习

  本篇主要富含了对PopupWindow的封装,实现动画弹窗的例子。可用于相册选择、点赞等等。同时封装使用了建造者模式,对于补间动画的运用同样有较高的学习价值...

771
来自专栏pangguoming

Android利用V4包中的SwipeRefreshLayout实现上拉加载

基本原理 上拉加载或者说滚动到底部时自动加载,都是通过判断是否滚动到了ListView或者其他View的底部,然后触发相应的操作,这里我们以 ListView来...

3189
来自专栏向治洪

achartengine之折线图

问题在文章的最后,大致说来就是折线图,如果点的个数大于3个的时候,不是所有的点都显示对应的值的,这是为什么呢,本来以为是小问题,但两天了还没找到原因) 将前...

24610
来自专栏Android干货

安卓开发_关于WebView加载页面空白问题

6767
来自专栏有趣的Python

智能管家-1-项目首页框架搭建(TabLayout+ViewPager)智能管家

智能管家 1. 项目架构部署 - Package - Application - Activity - Drawable - Values - UtilTool...

3906
来自专栏蜉蝣禅修之道

android控制view的大小和位置(一)

1914
来自专栏技术小黑屋

超简单实现Google+列表特效

相信用过Google+的人都感到其应用的特效相当棒,本文将以超简单的形式来实现类似Google+列表的特效。仅仅写几行代码就可以实现奥。

882

扫码关注云+社区