android中返回刷新,Android intent 传递对象以及返回刷新

之前项目需要,找过这方面知识。所以今天也总结一下。大家都知道activity跳转用intent,Android的当前页面跳转到新的页面。当然跳转的同时常常要携带数据或者对象。那我下面就说说跳转带对象吧。还有在例子当中,新的activity返回时,也有对象一起返回。下面看代码,只要入门Android了都看得懂,我就不再写很多注释了。

demo源码例子下载地址:点击此处下载

有两种对象类型可以传递,一是Parcelable,推荐用这个。二是Serializable。当然你在class建立对象时,都要对这两个进行接口。看代码。

package com.example.intentdemo;

import android.os.Parcel;

import android.os.Parcelable;

public class User implements Parcelable{

private String name;

private String sex;

private int eage;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getEage() {

return eage;

}

public void setEage(int eage) {

this.eage = eage;

}

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

public User createFromParcel(Parcel source) {

User user = new User();

user.name = source.readString();

user.sex = source.readString();

user.eage = source.readInt();

return user;

}

public User[] newArray(int size) {

return new User[size];

}

};

@Override

public int describeContents() {

return 0;

}

@Override

public void writeToParcel(Parcel parcel, int arg1) {

parcel.writeString(name);

parcel.writeString(sex);

parcel.writeInt(eage);

}

}

package com.example.intentdemo;

import java.io.Serializable;

public class Student implements Serializable {

private String name;

private String sex;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public String getSex() {

return sex;

}

public void setSex(String sex) {

this.sex = sex;

}

public int getEage() {

return eage;

}

public void setEage(int eage) {

this.eage = eage;

}

private int eage;

}

MainActivity.class

package com.example.intentdemo;

import java.util.ArrayList;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.Menu;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

import android.widget.TextView;

public class MainActivity extends Activity implements OnClickListener {

private ArrayList mArrayListUsers = new ArrayList();

private ArrayList mArrayListStudent = new ArrayList();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

InitUI();

}

private void InitUI() {

Button Parcelable = (Button) findViewById(R.id.button1);

Button Serializable = (Button) findViewById(R.id.button2);

if (Parcelable != null) {

Parcelable.setOnClickListener(this);

}

if (Serializable != null) {

Serializable.setOnClickListener(this);

}

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

@Override

public void onClick(View arg0) {

if (arg0.getId() == R.id.button1) {

setParcelable();

} else if (arg0.getId() == R.id.button2) {

setSerializable();

}

}

private void setSerializable() {

Student student = new Student();

student.setName("Serializable");

student.setSex("nv");

student.setEage(25);

mArrayListStudent.add(student);

mArrayListStudent.add(student);

Intent mIntent = new Intent(this, IntentSerializableActivity.class);

Bundle mBundle = new Bundle();

mBundle.putSerializable("student_key", student); // 传递一个user对象

mBundle.putSerializable("student_Arry", mArrayListStudent); // 传递一个user对象列表

mIntent.putExtras(mBundle);

startActivityForResult(mIntent, 200); // 带返回结果的Intent,标志码是1

}

private void setParcelable() {

User user = new User();

user.setName("Parcelable");

user.setSex("nan");

user.setEage(25);

mArrayListUsers.add(user);

mArrayListUsers.add(user);

Intent mIntent = new Intent(this, IntentParcelableActivity.class);

Bundle mBundle = new Bundle();

mBundle.putParcelable("User_key", user); // 传递一个user对象

mBundle.putParcelableArrayList("User_Arry", mArrayListUsers); // 传递一个user对象列表

mIntent.putExtras(mBundle);

startActivityForResult(mIntent, 100); // 带返回结果的Intent,标志码是1

}

// 返回activity页面刷新

protected void onActivityResult(int requestCode, int resultCode, Intent data) {

TextView show = (TextView) findViewById(R.id.test);

if (resultCode == RESULT_OK && requestCode == 100) {

Bundle bundle = this.getIntent().getExtras();

if (bundle != null) {

mArrayListUsers = bundle.getParcelableArrayList("User_Arry");

}

show.setText("");

show.append("IntentParcelableActivity返回的数据: " + "\n");

for (int i = 0; i < mArrayListUsers.size(); i++) {

User userArrayList = new User();

userArrayList = mArrayListUsers.get(i);

show.append("name is: " + userArrayList.getName() + "\n"

+ "age is: " + userArrayList.getEage() + "\n");

}

} else if (resultCode == RESULT_OK && requestCode == 200) {

Bundle bundle = this.getIntent().getExtras();

if (bundle != null) {

mArrayListStudent = (ArrayList) bundle

.getSerializable("student_Arry");

}

show.setText("");

show.append("IntentSerializableActivity返回的数据: " + "\n");

for (int i = 0; i < mArrayListStudent.size(); i++) {

Student studentArrayList = new Student();

studentArrayList = mArrayListStudent.get(i);

show.append("name is: " + studentArrayList.getName() + "\n"

+ "age is: " + studentArrayList.getEage() + "\n");

}

}

}

}

接受数据新的activity

IntentParcelableActivity.class

package com.example.intentdemo;

import java.util.ArrayList;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.KeyEvent;

import android.view.Menu;

import android.widget.TextView;

public class IntentParcelableActivity extends Activity {

private ArrayList mArrayListUsers = new ArrayList();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView mTextView = new TextView(this);

User user = new User();

Bundle bundle = this.getIntent().getExtras();

if (bundle != null) {

user = bundle.getParcelable("User_key");

mArrayListUsers = bundle.getParcelableArrayList("User_Arry");

}

mTextView.append("You name is: " + user.getName() + "\n"

+ "You age is: " + user.getEage() + "\n" + "\n");

for (int i = 0; i < mArrayListUsers.size(); i++) {

User userArrayList = new User();

userArrayList = mArrayListUsers.get(i);

mTextView.append("You name is: " + userArrayList.getName() + "\n"

+ "You age is: " + userArrayList.getEage() + "\n");

}

setContentView(mTextView);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

// 返回按键调用

public boolean onKeyDown(int keyCode, KeyEvent event) {

// TODO Auto-generated method stub

if (keyCode == KeyEvent.KEYCODE_BACK) {

Intent intent = new Intent();

Bundle mBundle = new Bundle();

mBundle.putParcelableArrayList("User_Arry", mArrayListUsers); //传递一个user对象列表

intent.putExtras(mBundle);

setResult(RESULT_OK, intent);

finish();

}

return true;

}

}

IntentSerializableActivity.class

package com.example.intentdemo;

import java.util.ArrayList;

import android.os.Bundle;

import android.app.Activity;

import android.content.Intent;

import android.view.KeyEvent;

import android.view.Menu;

import android.widget.TextView;

public class IntentSerializableActivity extends Activity {

private ArrayList mArrayListStudent=new ArrayList();

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

TextView mTextView = new TextView(this);

Student student = new Student();

Bundle bundle = this.getIntent().getExtras();

if (bundle != null) {

student = (Student) bundle.getSerializable("student_key");

mArrayListStudent = (ArrayList) bundle.getSerializable("student_Arry");

}

mTextView.append("You name is: " + student.getName() + "\n"

+ "You age is: " + student.getEage() + "\n" + "\n");

for (int i = 0; i < mArrayListStudent.size(); i++) {

Student studentArrayList = new Student();

studentArrayList = mArrayListStudent.get(i);

mTextView.append("You name is: " + studentArrayList.getName() + "\n"

+ "You age is: " + studentArrayList.getEage() + "\n");

}

setContentView(mTextView);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.main, menu);

return true;

}

// 返回按键调用

public boolean onKeyDown(int keyCode, KeyEvent event) {

if (keyCode == KeyEvent.KEYCODE_BACK) {

Intent intent = new Intent();

Bundle mBundle = new Bundle();

mBundle.putSerializable("student_Arry", mArrayListStudent); //传递一个user对象列表

intent.putExtras(mBundle);

setResult(RESULT_OK, intent);

finish();

}

return true;

}

}

xml布局我就不贴了,需要源码可以下载。

其实看一下代码,都是能看明白。也很容易实践,用过一遍之后就好很多了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值