Android基础 Intent跳转传值



intent(意图) :跳转传值  详细步骤

Intent 传值

  传递一个数据的时候用putExtra()

传递一组数据的时候用putExtras();

可以传递基本数据类型

也可以传递应用数据类型

传递基本数据类型可以直接传值

传递引用数据类型(或者自定义数据类型)必须序列化

Java 里面是serializable--------android里面是Parcelable

传递基本数据类型

Intent intent=new Intent();

intent.setClass(this, OtherActivity.class);

//传值一 直接通过意图来传递

intent.putExtra("name"name);

intent.putExtra("age"age);

// //传值二  创建一个bundle(打包--将属性打包在一起然后直接传包)类对象 

Bundle bundle=new Bundle();

bundle.putString("name"name);//String是因为String实现le 序列化接口Serializable

bundle.putInt("age"age);

intent.putExtras(bundle);

startActivity(intent);

在第二个界面获取的时候

public class OtherActivity extends BaseActivity{

@Override

protected void onCreate(Bundle savedInstanceState) {

// TODO Auto-generated method stub

super.onCreate(savedInstanceState);

setContentView(R.layout.other_activity);

//直接通过意图来取值

Intent intent=getIntent();//获得上个页面的意图

String name=intent.getStringExtra("name");

int age=intent.getIntExtra("age", 0);//0是默认值 可以随意写

showLongToast(name+"  "+age);

}

// @Override

// public boolean onTouchEvent(MotionEvent event) {

// // TODO Auto-generated method stub

// if(event.getAction()==MotionEvent.ACTION_DOWN){

// //拿到包在取值

// Intent intent1=getIntent();

// Bundle bundle=intent1.getExtras();

// String name1=bundle.getString("name");

// int age1=bundle.getInt("age");

// showLongToast(name1+":"+age1);

// }

// return super.onTouchEvent(event);

// }

}

 

android里面是Parcelable

     通过实现Parcelable接口序列化对象的步骤: 
        1、声明实现接口Parcelable 
        2、实现Parcelable的方法writeToParcel,将你的对象序列化为一个Parcel 对象 
        3、实例化静态内部对象CREATOR实现接口Parcelable.Creator:

Java代码 public static final Parcelable.Creator<T> CREATOR  
    其中public static final一个都不能少,内部对象CREATOR的名称也不能改变,必 须全部大写。 
    4、完成CREATOR的代码,实现方法createFromParcel,将Parcel对象反序 列化为你的对象 

具体代码如下:

public class ently implements Parcelable{

public String name;

public Date date;

public Bitmap bitmap;

public ently() {}

@Override

public int describeContents() {

// TODO Auto-generated method stub

return 0;

}

 

 

 

//序列化对象

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeString(name);

dest.writeSerializable(date);

dest.writeParcelable(bitmap, flags);

}

//反序列化

public static final Parcelable.Creator<ently> CREATOR=new Parcelable.Creator<ently>() {

@Override

public ently[] newArray(int size) {

return new ently[size] ;

}

@Override

public ently createFromParcel(Parcel source) {

ently entlys=new ently();//创建一个实例对象

entlys.name=source.readString();//将读到的

entlys.date=(Date) source.readSerializable();

entlys.bitmap=source.readParcelable(null);

return entlys;

}

};

}

传递数据的activity

public class MainActivity extends Activity {

public ently entlys;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

entlys=new ently();

entlys.name="sdffsd";

entlys.date=new Date();

entlys.bitmap=BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);

}

@Override

public boolean onTouchEvent(MotionEvent event) {

if(event.getAction()==MotionEvent.ACTION_DOWN){

Intent intent=new Intent();

intent.putExtra("ently"entlys);

intent.setClass(MainActivity.this, OtherActivity.class);

startActivity(intent);

}

return super.onTouchEvent(event);

}

}

获取的activity

public class OtherActivity extends Activity {

public TextView view;

public ImageView view2;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_other);

ently entlys=getIntent().getParcelableExtra("ently");

view=(TextView) findViewById(R.id.textView2);

String str=entlys.name+entlys.date;

view.setText(str);

view2=(ImageView) findViewById(R.id.imageView1);

view2.setImageBitmap(entlys.bitmap);

}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值