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

参考博客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;
    }

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值