前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Fragment回调Activity

Fragment回调Activity

作者头像
坑吭吭
发布2018-08-31 17:24:27
1.7K0
发布2018-08-31 17:24:27
举报
文章被收录于专栏:一直在跳坑然后爬坑
应用场景

如果你需要在fragment中处理一些事情,事情的处理结果或者你需要告 诉activity马上要做什么事,这时候就需要和activity进行通讯。包括很多fragment在viewpager中的情况,而且可以保证activity能即时进行响应。相比发送广播,性能更好,代码更少。

实战

假设有这样一个需求:在一个activity中有一个viewpager,viewpager里面有几个fragment,其中的一个fragment里面有一个任务,这个任务做完之后需要跳转到其他的fragment。

分析

既然需要跳转的到的fragment在viewpager里,那么只要控制viewpager跳转就可以了,而viewpager在activity里,我们是不是可以告诉activity一声让它处理一下就可以了呢?

步骤

1.定义回调

代码语言:javascript
复制
     public interface OnFinishListener{
        void onSuccess(int position);//这里可以定义参数传给activity,也可以没有
    }

2.实现接口 让activity实现这个接口:

代码语言:javascript
复制
public class DemoActivity extends AppCompatActivity implements DemoFragment.OnFinishListener

这里需要在回调中让viewpager切换页面,所以:

代码语言:javascript
复制
@Override
    public void onSuccess(int position) {
        viewpager.setCurrentItem(position);
    }

3.获取实例(关键部分) 首先定义一个全局变量

代码语言:javascript
复制
private OnFinishListener listener;

然后重写fragment的onAttach(Context context)方法:

代码语言:javascript
复制
    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        try {
            listener = (OnFinishListener) context;
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

由于onAttach(Activity activity)这个方法已经被标记过时,这里推荐用onAttach(Context context)来给全局变量listener赋值 注意:这里这个方法的注释为

代码语言:javascript
复制
     /**
     * Called when a fragment is first attached to its context.
     * {@link #onCreate(Bundle)} will be called after this.
     */

意思是这个方法只有在第一次附着在activity上时被调用,而且是在onCreate(Bundle)方法前调用,所以理论上也可以在onCreate(Bundle)中回调该Activity

4.根据业务进行回调 这里我们只需要在需要Activity切换fragment的地方调用

代码语言:javascript
复制
        if (listener != null) {
            listener.onSuccess(1);
        }
结语

各位看官如果有何其它不同的观点或建议,希望大家可以在下面留言讨论。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017.02.09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 应用场景
  • 实战
  • 分析
  • 步骤
  • 结语
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档