android中各种界面之间的传值

1.Fragment 给activity传值,用的intent

 Intent intent = new Intent(getActivity(), Activity.class);
 intent.putExtra("cid", city_id);
  startActivity(intent);

2.Activity之间传值,同上,也是用的Intent

3。Activity界面上有popupWindow显示进行选择的时候,popu给当前所在的Activity传值,用回调的方法
(1)第一种方法
在Activity界面定义一个方法,如下,括号里面是所需要的参数,即需要传递的数据

 public void initBusiness(String bbid, String flag) 
    }

在popuwindow界面,首先声明一下Activity、

HotelActivity mHotelActivity;

在popu的构造函数里面强转一下

 mHotelActivity= (HotelActivity) mContext;

在需要传递数据的地方传值调用该方法

mHotelActivity.initBusiness(cbid,flag);

(2)回调函数
在popu里面定义一个回调监听

 public interface OnCallbackListener{
        public void oncallBack(String num);
    }

在Activity继承这个监听implements OnCallbackListener,然后实现这个方法

 /**
     * 回调接口
     */
    @Override public void oncallBack(String num) {
    }

同样的方法在popu里面声明Activity,然后强转

private OnCallbackListener mOnCallbackListener;

private Activity activity;

 mOnCallbackListener= (OnCallbackListener) context;

在需要传值的地方传值

mOnCallbackListener.oncallBack(text_one.getText().toString());

值得注意的是,在项目中一般在MainActivity里面有Fragment实现碎片的效果,在这样的情况下Activity(popu)如果给Fragment传值不能用这样回调的方法,因为不在一个层面上。就得用SharedPreferences pro进行传递数据,或者用bundle

private Handler mHandler;

传递数据

Message msg=new Message();
Bundle data=new Bundle();
data.putString(“cbid”,cbid);
data.putString(“flag”,flag);
msg.setData(data);
msg.what=300;
mHandler.sendMessage(msg);

接收数据

handler=new Handler(){
public void handleMessage(android.os.Message msg){
switch (msg.what){
case 300:
Bundle bundle=msg.getData();
String flag= String.valueOf(bundle.get(“flag”));


 暂时先介绍这几种常用的方法,当然传值的方法很多,需要的再去查询吧。谢谢

猜你喜欢

转载自blog.csdn.net/wzs0316xuan/article/details/60143694