借助Intent实现Android工程中Activity之间Java对象的传递——实现Serializable接口

借助Intent实现Android工程中Activity之间Java对象的传递有两种方式:一种所传递对象实现了Serializable接口;另一种是所传递对象实现了Parcelable接口,本博客总结传递对象实现Serializable接口的情况下如何实现Java对象传递:

代码1、添加名为“User.java”的文件:

package com.ghj.vo;

import java.io.Serializable;

public class User implements Serializable{

	private static final long serialVersionUID = -8278907591742219230L;

	private String id;
	private String name;

	public User(String id, String name) {
		this.id = id;
		this.name = name;
	}

	public String getId() {
		return id;
	}
	public void setId(String id) {
		this.id = id;
	}
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
}

代码2、添加名为“FromActivity.java”的文件:

package com.ghj.activity;

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;

import com.ghj.vo.User;

public class FromActivity extends Activity implements OnClickListener {

	private Button button;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.from);
		button = (Button)findViewById(R.id.ok_btn);
		button.setOnClickListener(this);
	}

	@Override
	public void onClick(View view) {
		Intent intent  = new Intent(FromActivity.this, ToActivity.class);
		Bundle bundle = new Bundle();
		User user = new User("56862586-108e-4749-93ca-440cd576ba92","王翔");
    	bundle.putSerializable("user", user);
    	intent.putExtras(bundle);
	    startActivity(intent);
	}
}

代码3、添加名为“ToActivity.java”的文件:

package com.ghj.activity;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;

import com.ghj.vo.User;

public class ToActivity extends Activity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.to);
		TextView textView = (TextView)findViewById(R.id.show_user_info);

		Intent intent = getIntent();
		User user  = (User) intent.getSerializableExtra("user");
		textView.setText(user.getId() + ":" + user.getName());
	}
}

代码4、添加名为“from.xml”的文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <Button
        android:id="@+id/ok_btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"
        android:layout_margin="10dp"
        android:text="传递Java对象" />

</RelativeLayout>

代码5、添加名为“to.xml”的文件:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/show_user_info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"/>

</RelativeLayout>

注意:采用传递对象实现Serializable接口的方式实现Java对象的传递,那么所传递对象的类一定要序列化(比如上面User类实现了Serializable),否则会出现类似如下的异常:java.lang.ClassCastException: com.ghj.vo.User cannot be cast to java.io.Serializable

0分下载Demo

时间: 2024-12-18 14:49:32

借助Intent实现Android工程中Activity之间Java对象的传递——实现Serializable接口的相关文章

借助Intent实现Android工程中Activity之间Java对象的传递——实现Parcelable接口

借助Intent实现Android工程中Activity之间Java对象的传递有两种方式:一种所传递对象实现了Serializable接口:另一种是所传递对象实现了Parcelable接口,本博客总结传递对象实现Parcelable接口的情况下如何实现Java对象传递: 代码1.添加名为"User.java"的文件: package com.ghj.vo; import android.os.Parcel; import android.os.Parcelable; public cl

android中activity之间传递数据的3种方式

在android开发中总是需要不停的传递数据,特别是不同的Activity之间.在这里小编介绍自己所知的3种Activity的跳转方式. 第一种:静态传递数据 直接上部分代码:在第一个Activity中 Intent intent = new Intent(); intent.setClass(MainActivity.this,SecondActivity.class); SecondActivity.usrname = "jack"; SecondActivity.password

Kotlin在Android工程中的应用

Kotlin在Android工程中的应用 @author ASCE1885的 Github 简书 微博 CSDN 原文链接 简介 Kotlin是由JetBrains设计的开放源码的编程语言,它正在Java开发者中变得越来越流行.Kotlin通常被吹捧为Java的继承者,相比较Java而言,Kotlin提供更为丰富的开发经验,因为它更现代,更具表现力和更简介. 如果你在寻求Android开发的可替代编程语言,那么应该试一下Kotlin.使用Kotlin,你可以很容易的在Android工程中替代Ja

[转载]android工程中引入另一个工程中的资源

原文地址:android工程中引入另一个工程中的资源作者:87fayuan 在项目中可能遇到这样的问题:项目过大,于是细分为N个子模块来做,每个模块都是不同的工程.涉及到activity传数据时,可以用intent等方法来解决.但是如果涉及到要共用资源,而又不能像传统java程序那样打成jar包,比如程序中有大量自定义view,而这些自定义view都引用了的一些资源文件时,就可以用这个方法. 工程一:MyViews 代码如下: public class MyTextView extends Te

Android——Fragment和Activity之间的通信+Frangment生命周期

Android--Fragment和Activity之间的通信+Frangment生命周期 Fr'agment和Activity之间的通信 1.在Fragment中声明一个接口. 2.在Activity中实现在Fargment中声明的接口. 3.在Fragment中声明一个接口对象. 4.在Frangment的生命周期Onattach方法中判断当前Activity是否实现了此Fragment中声明的接口.如果已实现,就把当前Activity转换成接口对象. 5.调用Activity中实现的方法=

关于Android工程中的主要文件夹存放的文件种类

Android工程中的文件类型包括以下几种: 一.jar包:是为了解决软件的兼容问题.如果在低版本Android平台上开发一个应用程序,而应用程序又想使用高版本才拥有的功能,就需要使用Support库.Android private libraries 和 Android 4.2.2  .Referenced libraries 等.其实 Android private libraries 和Referenced libraries 两个文件夹中的都是通过configure build  pat

android工程中menu的使用总结

android的Menu使用 转自:thinkYeah的博客 1.普通的Menu 先来看看最简单的Menu怎样实现. 在主Activity中覆盖onCreateOptionsMenu(Menu menu)方法. 代码 @Override public boolean onCreateOptionsMenu(Menu menu) { // TODO Auto-generated method stub menu.add(0, 1, 1, "苹果"); menu.add(0, 2, 2,

在自己的android工程中使用actionbarsherlock以及slidingmenu

最近在做一个东西,然后要求能兼容2.3以上手机(这个要求实在是蛋疼,现在充话费送的手机系统都是4.0.3的了)加上需要的抽屉的效果和Google自带的Drawer的样式不太一样,无奈之下,只能自己用开源库重新写 ,上网搜一下,大家都推荐使用Actionbarsherlock+slidingmenu的组合,自己尝试了一下下 首先先去下载这两个开源项目,附上下载地址 Actionbarsherlock:http://actionbarsherlock.com/download.html Slidin

Android工程中加入图片,报错cannot be resolved or is not a field

SDK和ADT为22.6.2版本 工程为4.4.2 今天在写Android代码的时候,往工程中加入了几张图片,然后在代码中使用R.drawable调用时,一直报错 cannot be resolved or is not a field 然后我查看了gen目录下的R.java文件,发现里面已经有我加入的图片资源ID了,觉得很奇怪,一般是无法生成R.java文件的时候才会出现这种现象啊 在网上查了资料也未见有可以解决我这个问题的方法,然后我就把我的代码从头到尾重新看了一遍,开始也没有发现什么异常,