两个Fragment之间如何传递数据

简介:

FragmentA启动FragmentB,做一些选择操作后,返回FragmentA,需要把FragmentB里面选择的数据传回来。有什么办法?

Fragment之间不能直接通信,必须通过Activity来完成,具体步骤。

1. 在FragmentA中定义通信接口,通过该接口向Activity发送数据。

复制代码
public class FragmentA extends Fragment {
    private onButtonPressListener mListener;

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_linmo_select_beitie, container, false);
        listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                mListener.onOKButtonPressed(selectedBeitie);
            }
        });

        return view;
    }

    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        try {
            mListener = (onButtonPressListener) activity;
        } catch (ClassCastException e) {
            throw new ClassCastException(activity.toString() + " must implement onOkButtonPressed");
        }
    }

    public interface onButtonPressListener {
        void onOKButtonPressed(LinmoBeitieItem item);
    }
}
复制代码

 

2. 在Activity中实现该接口,并通过该接口向FragmentB传递数据。

复制代码
public class MainActivity extends Activity implements FragmentA.onButtonPressListener {
    @Override
    public void onOKButtonPressed(LinmoBeitieItem item) {
        FragmentB fragmentB = (FragmentB)getFragmentManager().findFragmentById(R.id.container);
        fragmentB.onBeitieSelected(item);
    }
}
复制代码

 

3. FragmentB接收到数据并处理。

public class FragmentA extends Fragment {
    public void onBeitieSelected(LinmoBeitieItem item) {
        // ...
    }
}

本文转自zdd博客园博客,原文链接:http://www.cnblogs.com/graphics/p/5151547.html,如需转载请自行联系原作者


相关文章
|
4月前
|
缓存 小程序 数据库
小程序页面之间(传值)传递数据的方法
小程序页面之间(传值)传递数据的方法
196 63
|
5月前
|
人工智能 数据安全/隐私保护
采用公用电话传递数据
【7月更文挑战第7天】采用公用电话传递数据。
48 3
|
7月前
|
开发者 iOS开发
如何实现 UIViewController 之间的数据传递?
如何实现 UIViewController 之间的数据传递?
61 1
|
7月前
Flutter StatefulWidget传递数据,多级控件传递数据
Flutter StatefulWidget传递数据,多级控件传递数据 在Flutter中,StatefulWidget可以通过构造函数将数据传递给其子控件,这种方式适用于一些简单的场景。但是,当存在多级嵌套控件时,将数据从祖先传递到后代可能会变得困难。在这种情况下,可以使用Flutter提供的InheritedWidget类来传递数据。
125 0
|
XML Java 数据格式
Fragment之间传递数据
画面显示(XML) 首先这是一个Activit显示上有两个Fragment容器,是为了显示两个Fragment。 然后Activity加载了两个Fragment的数据并依次replace到了两个容器中。 此时Activity就有了两个Fragment的对象,方便后续FragmentA获取FragmentB。
157 0
|
JavaScript
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
142 0
Vue~组件之间相互传递数据 (父与子、子与父、子与子)
使用NavHostFragment、navigation--- avtivity向fragment传值,fragment之间传值
使用NavHostFragment、navigation--- avtivity向fragment传值,fragment之间传值
262 0
|
容器
Fragment与Fragment相互切换之间的生命周期方法
最近一段时间忙于找工作,找到工作之后忙于项目上线,好久没有写过博客,现在感觉终于闲暇了,写一写这次项目中需要总结提炼的知识点,给自己留个印象吧,毕竟好记性不如烂笔头。
1590 0
|
XML Android开发 数据格式
Fragment与Activity之间的通信
前言 君子博学而日参省乎已,则知明而行无过矣。 要显示Fragment,必须将Fragment添加到Activity中。添加到Activity中有如下两种方式。
1197 0