参考博客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;
}
刚学的菜鸟一个,不妥之处多多包涵。