Android程序中Acticity间传递数据

  在Android开发过程中,在不同的Acitivity之间传递数据的情况是非常常见的。我花费了一点时间来总结Acitivity之间的数据传递,记录下来。

  1、简单传递键值对

  这种传递方式非常简单,只需要在构造Intent加入相应的键值对。

  在ActivityA中,调用Intent的代码如下:

1 Intent i = new Intent(ActivityA.this,ActivityB.class);
2 i.putExtra("name", "Finlay Liu");
3 i.putExtra("age", "19");
5 startActivity(i);

  在ActivityB中,可以直接更加相应的键值对读取即可。

1 String s = getIntent().getStringExtra("name") + " : " + getIntent().getStringExtra("age");
4 Toast.makeText(this, s, Toast.LENGTH_SHORT).show();

  2、传递对象

  在不同的Acitivity之间传递对象,也是一种非常常见的做法。之前没有仔细阅读Android开发文档,所以之前我在写Android代码的时候,不同Acitivity之间对象传递是通过静态类来实现的。起始在Activity间传递对象也非常简单,与上面的传递键值对方法类似。

  首先是对需要传递的类加上序列化接口:

 1 package com.finlayliu.passingobject;
 2
 3 import java.io.Serializable;
 4
 5 public class Person implements Serializable {
 6
 7     private static final long serialVersionUID = 1L;
 8
 9     public int getId() {
10         return id;
11     }
12
13     public void setId(int id) {
14         this.id = id;
15     }
16
17     public String getName() {
18         return name;
19     }
20
21     public void setName(String name) {
22         this.name = name;
23     }
24
25     public int getAge() {
26         return age;
27     }
28
29     public void setAge(short age) {
30         this.age = age;
31     }
32
33     private int id;
34     private String name;
35     private int age;
36
37     public Person() {
38
39     }
40
41     public Person(int id, String name, int age) {
42         this.id = id;
43         this.name = name;
44         this.age = age;
45
46     }
47
48     public String toString() {
49         return id + ":" + this.name + ":" + age;
50     }
51 }

Person 类

  在ActivityA中,调用Intent的代码如下:

1 Intent i = new Intent(MainActivity.this, OtherActivity.class);
2 Person p = new Person(1, "Finaly Liu", 19);
3 i.putExtra("Person", p);
4
5 startActivity(i);

  在ActivityB中,读取相应的对象代码如下:

1 Person p = (Person) getIntent().getSerializableExtra("Person");
2 Toast.makeText(getApplicationContext(), p.toString(), Toast.LENGTH_LONG).show();

Android程序中Acticity间传递数据

时间: 2024-11-15 23:35:48

Android程序中Acticity间传递数据的相关文章

Android 开发中使用Intent传递数据的方法

Activity之间通过Intent传递值,支持基本数据类型和String对象及它们的数组对象byte.byte[].char.char[].boolean.boolean[].short.short[].int.int[].long.long[].float.float[].double.double[].String.String[],还有采用实现Serializable.Parcelable接口的类对象传递数据的两种方法:一种是Bundle.putSerializable(Key,Obje

在Android程序中使用已有的SQLite数据库

已经将这篇文章迁移至 Code问答,你也能够到这里查看这篇文章,请多多关注我的新技术博客CodeWenDa.com 在中文搜索中,没有找到一篇比較好的关于怎样在Android应用中使用自己事先创建好的数据库的文章,于是在谷歌上找到这篇英文文章,依照它的步骤,測试成功.决定把这篇文章大致的翻译一下,想看原文的能够点击这里:http://www.reigndesign.com/blog/using-your-own-sqlite-database-in-android-applications/ .

窗体间传递数据(跨控件跨类),三种情况与处理方法

环境:Qt5.5 MCVS2013 IDE:QtCreator 范例代码下载地址:http://download.csdn.net/detail/shihoongbo/9134859 发现很多Qt的初学者,经常会在“窗体间如何传递数据”的问题上卡住,而网上通常只是简单描述为使用信号与槽(signal& slot)机制来传递 虽然信号与槽的传递方式确实没错,但是却不一定能适用到全部的情况. 所以,总结了窗体间传递数据的三种情况和对应方法: 模型描述:  已知三个窗体,A为B C的父控件,B与C互为

在Android程序中使用Modbus协议时报 java.net.SocketException: recvfrom failed: ECONNRESET解决办法

最近在开发基本Modbus协议的Android端PLC控制程序,C#版程序没有任何问题,移到JAVA下出现各种问题,其中比较苦恼的是java.net.SocketException: recvfrom failed: ECONNRESET错误. 开始我的解决方法是每次向PLC发送一条数据后关掉socket,但是这样做太极端了. 经过分析发现是由于发送的数据包大小我设定为256,当写入1个寄存器值时,Modbus服务端直接报错,关掉了socket连接,将发送的数据包大小改成实际的大小后解决问题.

SQLite在Android程序中的使用方法,SQLite的增删查改方法

Sqlite: 1.一款用来实现本地数据存储的轻量级数据管理工具,是众多用来实现数据库管理的工具之一. 2.Android已经将SQLite的代码功能吸收在它的系统中,我们可以直接在Android程序中使用SQLite的语句来创建数据库,并实现数据库的增删查改 SQLite的简单使用方法: 如何获得一个数据库的class模板,并设定数据库里的数据结构: 自己新建一个类,继承SQLiteOpenHelper,并重写构造方法,oncreate(),onUpgrade() 自定义类的代码实现方法和构造

使用Bundle在Activity间传递数据

使用Bundle在Activity间传递数据 源Activity public class SourceActivty extends Activity { private Intent intent=null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); intent=new In

在android程序中调用shell命令与脚本

最近做android的一个功能就是调用shell命令来进行一些系统级别的操作,比如说是关机开机之类的,现在总结一下具体的用法以及遇到的坑(基于我所用到的,没用到的我就不说了) (1) Runtime.getRuntime().exec("ls"); 这是最简单的一种,你输入后就能就会执行ls命令,如果要获得输出的话可以这样写 Process p = Runtime.getRuntime().exec("ls"); String data = null; Buffer

Android程序中Web页面和NativeCode交互

首先应该在AndroidManifest.xml把下面这个加上使得具有网络访问权限 <uses-permission android:name="android.permission.INTERNET"/> 然后在布局文件上插入WebView main.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http:/

在android程序中怎么执行ifconfig命令来修改android 的ip地址,

1.引入: import android.provider.Settings; import android.content.ContentResolver; ps:在Setting.System中有以下标志 WIFI_USE_STATIC_IP WIFI_STATIC_IP WIFI_STATIC_NETMASK WIFI_STATIC_GATEWAY WIFI_STATIC_DNS1 and WIFI_STATIC_DNS2 2.在AndroidManifest中加入<uses-permis