日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 人文社科 > 生活经验 >内容正文

生活经验

java intent 传递集合对象_Intent之对象传递(Parcelable传递对象和对象集合)

發(fā)布時間:2023/11/27 生活经验 43 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java intent 传递集合对象_Intent之对象传递(Parcelable传递对象和对象集合) 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

接著上一篇文章,以下我們討論一下怎樣利用Parcelable實現(xiàn)Intent之間對象的傳遞

一、實現(xiàn)對象傳遞

首先創(chuàng)建User.java實現(xiàn)Parcelable接口:

package org.yayun.demo;

import java.io.Serializable;

import android.R.integer;

import android.os.Parcel;

import android.os.Parcelable;

public class User implements Parcelable {

private String name;

private int level;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getLevel() {

return level;

}

public void setLevel(int level) {

this.level = level;

}

public User(String name, int level) {

this.name = name;

this.level = level;

}

public User() {// 構(gòu)造方法

}

public int describeContents() {// 覆寫的方法

return 0;

}

public void writeToParcel(Parcel parcel, int flags) {// 覆寫的方法

parcel.writeString(name);

parcel.writeInt(level);

}

public static final Parcelable.Creator CREATOR = new Creator() {//必須實現(xiàn)的方法

public User createFromParcel(Parcel source) {

User user = new User();

user.name = source.readString();

user.level = source.readInt();

return user;

}

public User[] newArray(int size) {

return new User[size];

}

};

}

Parcelable.Creator是必需要實現(xiàn)的,否則會報錯:

以下看兩個Activity

1.MainActivity.java

package org.yayun.demo;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity {

private Button button;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // 生命周期方法

super.setContentView(R.layout.main); // 設(shè)置要使用的布局管理器

button = (Button) findViewById(R.id.btn);

button.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

User user1 = new User("yayun", 7);// 實例化對象

Intent intent = new Intent();

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

Bundle bundle = new Bundle();

bundle.putParcelable("user", user1);// 序列化

intent.putExtras(bundle);// 發(fā)送數(shù)據(jù)

startActivity(intent);// 啟動intent

}

});

}

}

2.LoginActivity.java:

package org.yayun.demo;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.widget.TextView;

public class LoginActivity extends Activity {

private TextView textView;

User user;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // 生命周期方法

super.setContentView(R.layout.login); // 設(shè)置要使用的布局管理器

textView = (TextView) findViewById(R.id.text);

Intent intent = this.getIntent();

user = (User) intent.getParcelableExtra("user");

textView.setText("username:" + user.getName() + "用戶等級"

+ String.valueOf(user.getLevel()));

}

}

3.執(zhí)行實比例如以下:

能夠看到和實現(xiàn)Serialiable接口一樣的結(jié)果。

二、實現(xiàn)對象集合傳遞

這里我們僅僅須要修改兩個Activity

1.MainActivity.java:

package org.yayun.demo;

import java.util.ArrayList;

import java.util.List;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class MainActivity extends Activity {

private Button button;

List list=new ArrayList();

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // 生命周期方法

super.setContentView(R.layout.main); // 設(shè)置要使用的布局管理器

button = (Button) findViewById(R.id.btn);

button.setOnClickListener(new OnClickListener() {

public void onClick(View v) {

User user1 = new User("yayun", 7);// 實例化對象

User user2=new User("feifei",9);

list.add(user1);

list.add(user2);

Intent intent = new Intent();

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

Bundle bundle = new Bundle();

bundle.putParcelableArrayList("list",(ArrayList)list);// 序列化,要注意 intent.putExtras(bundle);// 發(fā)送數(shù)據(jù)

startActivity(intent);// 啟動intent

}

});

}

}

2.LoginActivity.java

package org.yayun.demo;

import java.util.List;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.widget.TextView;

public class LoginActivity extends Activity {

private TextView textView;

List list;

User user2;

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState); // 生命周期方法

super.setContentView(R.layout.login); // 設(shè)置要使用的布局管理器

textView = (TextView) findViewById(R.id.text);

Intent intent = this.getIntent();

list = intent.getParcelableArrayListExtra("list");//getParcelableArrayListExtra方法

user2=(User)list.get(1);

textView.setText("username:" + user2.getName() + "用戶等級"

+ String.valueOf(user2.getLevel()));

}

}

3.執(zhí)行實例:

執(zhí)行成功!

最后注意在AndroidManifest.xml文件里配置LoginActivity

總結(jié)

1.實現(xiàn)Parcelable接口注意覆寫幾個方法和實現(xiàn)Parcelable.Creator方法;

2.bundle.putParcelable("user", user1);// 序列化

3.user = (User) intent.getParcelableExtra("user");//獲取對象

4.bundle.putParcelableArrayList("list",(ArrayList)list);//存入List對象數(shù)組

5.list = intent.getParcelableArrayListExtra("list");//getParcelableArrayListExtra方法獲取對象數(shù)組

6.系統(tǒng)好像僅僅提供了List對象數(shù)組的傳遞方法,其它集合怎么傳遞?希望大牛告知。

喜歡的朋友點個贊唄。關(guān)注一下唄!

謝謝

總結(jié)

以上是生活随笔為你收集整理的java intent 传递集合对象_Intent之对象传递(Parcelable传递对象和对象集合)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。