Android Activity向Fragment界面传值(使用Handler和回调)

Android 专栏收录该内容
7 篇文章 0 订阅

参考博客https://blog.csdn.net/chenliguan/article/details/53906934

方法一Handler传值:

首先在MainAvtivity类声明一个Handler

private Handler mHandler;
    
    public void setHandler(Handler handler) {
        mHandler = handler;
        }

在需要传值的地方使用Message类进行传值

String s= "stgr42";
Message msg = new Message();
 msg.what = 1;
 msg.obj = s;
 mHandler.sendMessage(msg);

然后在Fragment类里进行赋值调用

private MainActivity mActivity;

/**
     * fragment与activity产生关联是  回调这个方法 
     */
    @Override
    public void onAttach(Activity activity) {
        // TODO Auto-generated method stub
        super.onAttach(activity);
        mActivity = (MainActivity) activity;
        mActivity.setHandler(mHandler);    
       
    }
        public Handler mHandler = new Handler() {
            public void handleMessage(android.os.Message msg) {
                    switch (msg.what) {
                        case 1:
                            tv_522.setText((String) msg.obj);//这里把传过来的值显示在textview上
                            break;
                         default:
                                break;
                    }
            };
        };

方法二 回调传值:

 先在MainActivity声明一个回调接口

private static DataChange dataChange;
    public void setData(DataChange dataChange) 
    {
        this.dataChange = dataChange;
    }

public interface DataChange  {
        void setDataChange(String sj);

}

 把要传的值添加进去

dataChange.setDataChange(sj);//参数声明什么类型的就传什么类型 我定义的是String类型

再到Fragment类的onCreateView方法里重写MainActivity的接口方法

private MainActivity mActivity;

@Override
    public View onCreateView(LayoutInflater inflater,
            @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view = View.inflate(getActivity(), R.layout.fragment_addressbook, null);
        tv_ssjj = (TextView)view.findViewById(R.id.TV_sj);
        mActivity.setData(new DataChange() {
            
            @Override
            public void setDataChange(String sj) {
                tv_ssjj.setText(sj);
            }
        });
    
        return view;
    }

/**
     * fragment与activity产生关联是  回调这个方法 
     */
    @Override
    public void onAttach(Activity activity) {
        super.onAttach(activity);
        mActivity = (MainActivity) activity;
    }

刚学的菜鸟一个,不妥之处多多包涵。 

  • 3
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 书香水墨 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值