java intent 传递集合对象_Intent之对象传递(Parcelable传递对象和对象集合)
接著上一篇文章,以下我們討論一下怎樣利用Parcelable實現Intent之間對象的傳遞
一、實現對象傳遞
首先創建User.java實現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() {// 構造方法
}
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() {//必須實現的方法
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是必需要實現的,否則會報錯:
以下看兩個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); // 設置要使用的布局管理器
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);// 發送數據
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); // 設置要使用的布局管理器
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.執行實比例如以下:
能夠看到和實現Serialiable接口一樣的結果。
二、實現對象集合傳遞
這里我們僅僅須要修改兩個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); // 設置要使用的布局管理器
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);// 發送數據
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); // 設置要使用的布局管理器
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.執行實例:
執行成功!
最后注意在AndroidManifest.xml文件里配置LoginActivity
總結
1.實現Parcelable接口注意覆寫幾個方法和實現Parcelable.Creator方法;
2.bundle.putParcelable("user", user1);// 序列化
3.user = (User) intent.getParcelableExtra("user");//獲取對象
4.bundle.putParcelableArrayList("list",(ArrayList)list);//存入List對象數組
5.list = intent.getParcelableArrayListExtra("list");//getParcelableArrayListExtra方法獲取對象數組
6.系統好像僅僅提供了List對象數組的傳遞方法,其它集合怎么傳遞?希望大牛告知。
喜歡的朋友點個贊唄。關注一下唄!
謝謝
總結
以上是生活随笔為你收集整理的java intent 传递集合对象_Intent之对象传递(Parcelable传递对象和对象集合)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 做输卵管造影是不是很痛
- 下一篇: 豆腐沙拉怎么做好吃呢?