androidr的 界面或者UI间 回传数据


思路是网上的大牛给提出来的,但是没有具体的实现。

出处:  http://bbs.csdn.net/topics/390389303


android fragment 启动另一个fragment,我怎么在第一个fragment中得到第二个 fragment回传的数据呢


androidr的开发者最喜欢使用广播进行界面或者UI间传数据,这种做法虽然实现简 单,但是是一个非常山炮的方法.
  在Activity传数据,我们可以使用Intent在onResultActivity获取,而在类与类 之间的传数据,我们可以使用接口.
而Fragment可以在A->B中,给B传一个接口,而接口的实现在A中实现,这样B处理完 后,调用A传来的接口就可以实现数据回传.
请LZ不要使用广播,如果这些地方都使用广播,整个系统都会被广播覆盖.


下面是我的理解和实现:


参考方法如下;


public class SelectUserFragmentextends DialogFragment {

  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View view = LayoutInflater.from(getActivity()).inflate(R.layout.select_user_fragment, null);
        mListView = (ListView) view.findViewById(R.id.user_listview);
        View footView = LayoutInflater.from(getActivity()).inflate(R.layout.select_user_footer,
                null);
        footView.setOnClickListener(OnClickListener);
        mListView.addFooterView(footView);
.....

        return view;
    }

 View.OnClickListener OnClickListener = new OnClickListener() {
        @Override
        public void onClick(View v) {
       
                    if (isChanged) {
                        mMyApplication.getDataSource().setPackageUsers(selectedUserLists);
                        if (mOperationListener != null) {
                            mOperationListener.onOperationClicked();
                        }

                    }
                
    };


  public void setOperationListener(OperationListener listener) {
        mOperationListener = listener;
    }


 public interface OperationListener {
        public void onOperationClicked();
    }

}




public class FragmentDiet extends Fragment implements OperationListener {

 fragment.setOperationListener(FragmentDiet.this);


  @Override
    public void onOperationClicked() {
        showUserInfo();
        showCategories();
    }

}



按照我的理解做如下总结:

情景如下:

我们先生成一个界面或者类叫做A,由A跳转到一个类或者界面,我们叫做B。即是A -->B

我们在B上进行了某些操作之后,希望A来相应B的操作,来做一些事情。

对应方法如下;

我们在B中定义一个接口,但是在B中不实现它,在A中实现这个接口。当然在B中还要保存一个接口的实例对象,这个实例对象在A中进行初始化。在B中进行操作的时候,我们用B中这个实例对象,调用该接口中定义的方法,我们了解接口和继承的应该就会知道,这个时候,它实际调用的即是A中对这个方法的实现。

不知道讲明白了没...呵呵呵...



同样,我们可以继续发散。。。。


比如我们还有个C,D,E等等。这个CDE和A一样,有一个到B界面的跳转,在B界面上进行操作的时候,这些CDE要做不同的相应。

这个时候,我们就可以CDE等,分别实现B中的这个接口,来自定义自己的实现方法....

这样在B中,我只要调用接口对象的方法就行了,不需要管这个方法的具体实现是由谁来完成的(A,CDE等等)

“一个接口,多种方法”,这就是传说中的多态吧~~我是这样理解的~~



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值