关于 android Intent 传对象和对象数组的一些操作

直接开正题,Intent传递值就是平常那些很简单的,接下来介绍传递 对象,和 对象数组


1 .intent 传递自定义的 对象 -

实体类继承  Serializable

public class AA implements Serializable{

	public String  a;
	public String  aa;
	public String  aaa;
	
	
}

intent塞入数据端

	
				AA a = new AA();
				a.a="a";
				a.aa ="aa";
				a.aaa = "aaa";
				
				Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
				Bundle bu = new Bundle();
				bu.putSerializable("enty", a);
				in.putExtras(bu);
				startActivity(in);

intent 接收数据端

 	AA a =(AA)this.getIntent().getExtras().getSerializable("enty");
    	System.out.println("a.a ="+  app.a);
       	System.out.println("a.aa ="+  app.aa);
       	System.out.println("a.aaa ="+  app.aaa);



实体类类继承  Parcelable(简单介绍一下:

1.什么是Parcelable ?

     Parcelable,定义了将数据写入Parcel,和从Parcel中读出的接口。一个实体(用类来表示),如果需要封装到消息中去,就必须实现这一接口,实现了这一接口,该实体就成为“可打包的”了。

2.Parcelable 传递对象

     Android序列化对象主要有两种方法:

    1.1实现Serializable接口是JavaSE本身就支持的;

    1.2实现Parcelable接口,Parcelable是Android特有的功能,效率比实现Serializable接口高,像用于Intent数据传递也都支持,而且还可以用在进程间通信(IPC),

      除了基本类型外,只有实现了Parcelable接口的类才能被放入Parcel中。

Parcelable的接口的定义:

public interface Parcelable {
	    //内容描述接口
	    public int describeContents();
	    //写入接口函数,打包
	    public void writeToParcel(Parcel dest, int flags);
	    //1.读取接口,目的是要从Parcel中构造一个实现了Parcelable的类的实例处理。因为实现类在这里还是不可知的,所以需要用到模板的方式,继承类名通过模板参数传入。
	    //2.为了能够实现模板参数的传入,这里才定义CREATOR嵌入接口,有两个接口函数分别返回单个和多个继承类实例。
	    public interface Creator<T> {
	           public T createFromParcel(Parcel source);
	           public T[] newArray(int size);
	       }


public class AA implements Parcelable{

	public String  a;
	public String  aa;
	public String  aaa;

	@Override
	public int describeContents() {
		return 0;
	}

	@Override
	public void writeToParcel(Parcel parcel, int flags) {
		//序列化对象,必须按照声明顺序
		parcel.writeString(a);
		parcel.writeString(aa);
		parcel.writeString(aaa);
		
	}
	//必须实现这个接口,它的作用是从 percel中读出来数据,顺序必须按照声明顺序
	public static final Parcelable.Creator<AA> CREATOR  = new Creator<AA>(){
		@Override
		public AA createFromParcel(Parcel source) {
			AA app=  new AA();
			app.a = source.readString();
			app.aa = source.readString();
			app.aaa = source.readString();
			return app;
		}
		@Override
		public AA[] newArray(int size) {
			return new AA[size];
		}
		
	};
}
intent塞入数据端

	                        AA a = new AA();
				a.a="a";
				a.aa ="aa";
				a.aaa = "aaa";
				
				Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
				Bundle bu = new Bundle();
				bu.putParcelable("enty", a);
				in.putExtras(bu);
				startActivity(in);
接收数据端

 // 可以这样app =(AA)this.getIntent().getParcelableExtra("enty");
			//也可以这样写,上面的也是
			app =(AA)this.getIntent().getExtras().getParcelable("enty");
			System.out.println("a.a ="+  app.a);
	       	System.out.println("a.aa ="+  app.aa);
	       	System.out.println("a.aaa ="+  app.aaa);


2。 下来是 自定义对象 数组传递

实体类类继承  Parcelable

intent塞入数据端

                      List<AA> list_aa =new ArrayList<AA>();
				AA a = new AA();
				a.a="a";
				a.aa ="aa";
				a.aaa = "aaa";
				
                           AA a1 = new AA();
				a1.a="a1";
				a1.aa ="aa1";
				a1.aaa = "aaa1";
				
				list_aa.add(a);
				list_aa.add(a1);
	
				Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
				Bundle bu = new Bundle();
				bu.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list_aa);  //---
				in.putExtras(bu);
				startActivity(in);
接收list数据端

List<AA> aa =this.getIntent().getExtras().getParcelableArrayList("list");
			
			for (AA aa2 : aa) {
				System.out.println("list_a.a = "+ aa2.a);
				System.out.println("list_a.aa = "+ aa2.aa);
				System.out.println("list_a.aaa = "+ aa2.aaa);
				System.out.println("=================================");
				
			}




  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
好的,下面是一个Android Studio示例,可以实现Intent传递数组Intent传递集合、Intent传递对象Intent传递Bitmap。其中,我定义了一个Person类,用于演示Intent传递对象;另外,我在MainActivity中编写了四个方法,每个方法分别实现了一种Intent传递方式。 1. Intent传递数组: ```java public void intentWithArray() { String[] array = new String[]{"item1", "item2", "item3"}; Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("array", array); startActivity(intent); } ``` 在接收端的SecondActivity中,可以通过以下代码获取数组: ```java String[] array = getIntent().getStringArrayExtra("array"); ``` 2. Intent传递集合: ```java public void intentWithList() { List<String> list = new ArrayList<>(); list.add("item1"); list.add("item2"); list.add("item3"); Intent intent = new Intent(this, SecondActivity.class); intent.putStringArrayListExtra("list", (ArrayList<String>) list); startActivity(intent); } ``` 在接收端的SecondActivity中,可以通过以下代码获取集合: ```java List<String> list = getIntent().getStringArrayListExtra("list"); ``` 3. Intent传递对象: ```java public void intentWithObject() { Person person = new Person("Tom", 20); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("person", person); startActivity(intent); } ``` 在接收端的SecondActivity中,可以通过以下代码获取对象: ```java Person person = (Person) getIntent().getSerializableExtra("person"); ``` 4. Intent传递Bitmap: ```java public void intentWithBitmap() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("bitmap", bitmap); startActivity(intent); } ``` 在接收端的SecondActivity中,可以通过以下代码获取Bitmap: ```java Bitmap bitmap = getIntent().getParcelableExtra("bitmap"); ``` 完整的MainActivity代码如下: ```java public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Button btnArray = findViewById(R.id.btn_array); Button btnList = findViewById(R.id.btn_list); Button btnObject = findViewById(R.id.btn_object); Button btnBitmap = findViewById(R.id.btn_bitmap); btnArray.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithArray(); } }); btnList.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithList(); } }); btnObject.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithObject(); } }); btnBitmap.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { intentWithBitmap(); } }); } public void intentWithArray() { String[] array = new String[]{"item1", "item2", "item3"}; Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("array", array); startActivity(intent); } public void intentWithList() { List<String> list = new ArrayList<>(); list.add("item1"); list.add("item2"); list.add("item3"); Intent intent = new Intent(this, SecondActivity.class); intent.putStringArrayListExtra("list", (ArrayList<String>) list); startActivity(intent); } public void intentWithObject() { Person person = new Person("Tom", 20); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("person", person); startActivity(intent); } public void intentWithBitmap() { Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.sample); Intent intent = new Intent(this, SecondActivity.class); intent.putExtra("bitmap", bitmap); startActivity(intent); } } ``` 另外,Person类的代码如下: ```java public class Person implements Serializable { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String getName() { return name; } public int getAge() { return age; } } ``` 希望这个示例能够帮助你理解Intent传递数组、集合、对象和Bitmap的实现方式。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

空白的泡

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值