Android -- Activity值传递
来源:互联网 发布:淘宝哥弟官方旗舰店 编辑:程序博客网 时间:2024/05/18 22:13
我们需要创建2个Activity,一个是A,一个是B。
简单的值传递
A的activity组织要传输给B的数据。
Intent i = new Intent(AMainActivity.this,BMainActivity.class);此行代码创建Intent对象,然后用于传输数据。
package com.example.testapp;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;public class AMainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_amain); findViewById(R.id.button1).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(AMainActivity.this, BMainActivity.class); // 传参数 i.putExtra("name", "gaopeng"); startActivity(i); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.amain, menu); return true; }}
B的Activity接收A传过来的数据,通过i.getStringExtra(“name”)获取数值。
package com.example.testapp;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.widget.TextView;public class BMainActivity extends Activity { private TextView t; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bmain); t = (TextView) findViewById(R.id.tv); Intent i = getIntent(); t.setText(i.getStringExtra("name")); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.bmain, menu); return true; }}
数据传输包Bundle
A的Activity,代码中我们用到了Bundle类,有点类似我们java中的map集合的用法。
使用putExtras或者putExtra方法将数据包放入到传输对象中。两个方法区别,一个是直接放入,另外一个是将数据包起一个别名,类似于KV的存储格式。
package com.example.testapp;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;public class AMainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_amain); findViewById(R.id.button1).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(AMainActivity.this, BMainActivity.class); Bundle b = new Bundle(); b.putString("name", "gaopeng"); b.putInt("age", 28);// i.putExtras(b); i.putExtra("user", b); startActivity(i); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.amain, menu); return true; }}
B的Activity,通过getBundleExtra或getExtras方法渠道Bundle对象,然后按照存放时候的名字,取出数值。
package com.example.testapp;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.widget.TextView;public class BMainActivity extends Activity { private TextView t; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bmain); t = (TextView) findViewById(R.id.tv); Intent i = getIntent(); Bundle b = i.getBundleExtra("user");// Bundle b = i.getExtras(); t.setText("name=" + b.getString("name") + ",age=" + b.getInt("age")); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.bmain, menu); return true; }}
传输对象
既然是传输对象,那么我们就需要创建一个对象类。
对象类需要实现序列化接口,这里我实现的是Serializable接口,Android有自带的序列化接口Parcelable,下一篇博文,我详细说明差异及用法。
package com.example.testapp;import java.io.Serializable;import android.os.Parcel;import android.os.Parcelable;public class User implements Serializable { // public class User implements Parcelable{ private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } User(String name, int age) { this.name = name; this.age = age; }}
A的Activity,
package com.example.testapp;import android.os.Bundle;import android.app.Activity;import android.content.Intent;import android.view.Menu;import android.view.View;public class AMainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_amain); findViewById(R.id.button1).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { Intent i = new Intent(AMainActivity.this, BMainActivity.class); i.putExtra("user", new User("lijingwei", 25)); startActivity(i); } }); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.amain, menu); return true; }}
B的Activity,通过getSerializableExtra获取对象。这种方式在我们以后的开发中应该会经常被用到。符合我们java面向对象的开发。
package com.example.testapp;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.Menu;import android.widget.TextView;public class BMainActivity extends Activity { private TextView t; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_bmain); t = (TextView) findViewById(R.id.tv); Intent i = getIntent(); User user = (User) i.getSerializableExtra("user"); t.setText("name=" + user.getName() + ",age=" + user.getAge()); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.bmain, menu); return true; }}
附上运行时的截图
A的Activity界面
B的Activity界面
1 0
- Android -- Activity值传递
- Android Activity值传递
- Android Activity之间的值传递
- Android的Activity之间的值传递
- Android多个activity值传递
- android activity间传递内容值
- android activity传递对象
- android开发fragment、Activity与Activity之间的值传递
- 【Android】Activity之间传递信息
- android activity之间传递参数
- Android Activity 之间传递对象
- android Activity之间传递对象
- Android Activity传递自定义对象
- android activity之间传递参数
- android activity之间参数传递
- Android activity之间传递数据
- android activity之间传递数据
- Android Activity传递简单数据
- 三消类游戏《万圣大作战》04:添加时间与分数
- 迅速了解:正则表达式
- mongodb3.0的安装及创建用户
- NYOJ 69【数的长度】
- cdn缓存导致的一次上传并转码覆盖源文件,导致文件有的不能访问问题
- Android -- Activity值传递
- gcc/g++等编译器 编译原理: 预处理,编译,汇编,链接各步骤详解
- Java 容器 & 泛型(2):ArrayList 、LinkedList和Vector比较
- chrome调试js出现Uncaught SyntaxError: Unexpected identifier
- 怎样快速提升视频播放量或者是视频播放次数呢?
- hdu~1242(bfs)
- tableView 如何设置仅某一行cell可以编辑删除
- linux学习笔记
- 浅谈js中的this关键字