Android组建1:Intent的使用
2015-06-12 11:47
489 查看
Android中Activity之间或者Activity与Server之间进行界面切换数据交互,使用最多的便是Intent。
(1) Intent 传递String等基本数据 并返回
(2) Intent 传递 List
(3) Intent 传递对象
(4) Intent 传递List<对象>
(5) Application 共享全局数据
(1) Intent 传递String等基本数据 并返回
MainActivity的Button
Intent mIntent =
new Intent(MainActivity.this,StringActivity.class);
mIntent.putExtra("data1",
"this is from MainActivity");
startActivityForResult(mIntent, 1);
MainActivity 接收Activity返回的数据
protected
void onActivityResult(int requestCode,
int resultCode, Intent data) {
//
TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==2){
String mString = data.getStringExtra("data2");
mTextView.setText(mString);
}
}
requestCode ==1 这个MainActivity可能通过Intent启动了几个Activity。requestCode表示是哪个Activity返回的数据。利用这两个参数,就可以确定到底是谁在发,谁在收。
接收Activity代码:
Intent mIntent = getIntent();
String mString = mIntent.getStringExtra("data1");
mTextView.setText(mString);
然后数据返回 关闭Activity
Intent mIntent =
new Intent();
mIntent.putExtra("data2",
"this is from StringActivity");
setResult(2, mIntent);
finish();
(2) Intent 传递 List
MainActivity发送数据
List<String> mList =
new ArrayList<String>();
mList.add("hello");
Intent mIntent =
new Intent(MainActivity.this,SecondActivity.class);
mIntent.putExtra("data",
"datalist");
mIntent.putStringArrayListExtra("list", (ArrayList<String>) mList);
startActivityForResult(mIntent, 1);
接收的时候,可以通过key 判断数据是否接收成功。以区别不同的发起端。因为这里不能接收Intent的发送Code
Intent mIntent = getIntent();
String mString = mIntent.getStringExtra("data");
String mString2 = mIntent.getStringExtra("xxx");
ArrayList<String> mArrayList = mIntent.getStringArrayListExtra("list");
Log.i("SecondActivity", mString);
if(!TextUtils.isEmpty(mString2)){
Log.i("SecondActivity", mString2);
}else{
Log.i("SecondActivity",
"Null");
}
Log.i("SecondActivity", mArrayList.toString());
(3) Intent 传递对象
发送。Person实例必须要实现 序列化的接口。
Person mPerson =
new Person("小明", 16);
Bundle mBundle =
new Bundle();
mBundle.putSerializable("data", mPerson);
Intent mIntent =
new Intent(MainActivity.this,ObjectActivity.class);
mIntent.putExtras(mBundle);
startActivityForResult(mIntent, 1);
接收
Intent mIntent = getIntent();
Person mPerson = (Person)mIntent.getSerializableExtra("data");
if(mPerson !=
null){
Log.i("ObjectActivity", mPerson.toString());
}
(4) Intent 传递List<对象>
发送
List<Person> mList =
new ArrayList<Person>();
Person mPerson =
new Person("小明", 16);
Person mPerson1 =
new Person("小兰", 17);
mList.add(mPerson);
mList.add(mPerson1);
Intent mIntent =
new Intent(MainActivity.this,ObjectActivity.class);
mIntent.putExtra("listobj",(Serializable)mList);
startActivityForResult(mIntent, 1);
接收:
List<Person> mList =
(List<Person>) mIntent.getSerializableExtra("listobj");
for (int i = 0; i < mList.size(); i++) {
Log.i("ObjectActivity", mList.get(i).toString());
}
(5) Application 共享全局数据
子类的定义一定不要重写构造方法。不然不能实例化成功。
public class MyAppClass
extends Application {
private String
textString;
public String getTextString() {
return
textString;
}
public
void setTextString(String textString) {
this.textString = textString;
}
@Override
public String toString() {
return
"MyAppClass [textString=" + textString +
"]";
}
}
Manifest中添加注册信息:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name=".MyAppClass">
多了最后一行。
发送
MyAppClass myAppClass = (MyAppClass)getApplication();
myAppClass.setTextString("123");
接收
MyAppClass myAppClass = (MyAppClass)getApplication();
String msg = myAppClass.getTextString();
(1) Intent 传递String等基本数据 并返回
(2) Intent 传递 List
(3) Intent 传递对象
(4) Intent 传递List<对象>
(5) Application 共享全局数据
(1) Intent 传递String等基本数据 并返回
MainActivity的Button
Intent mIntent =
new Intent(MainActivity.this,StringActivity.class);
mIntent.putExtra("data1",
"this is from MainActivity");
startActivityForResult(mIntent, 1);
MainActivity 接收Activity返回的数据
protected
void onActivityResult(int requestCode,
int resultCode, Intent data) {
//
TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
if(resultCode==2){
String mString = data.getStringExtra("data2");
mTextView.setText(mString);
}
}
requestCode ==1 这个MainActivity可能通过Intent启动了几个Activity。requestCode表示是哪个Activity返回的数据。利用这两个参数,就可以确定到底是谁在发,谁在收。
接收Activity代码:
Intent mIntent = getIntent();
String mString = mIntent.getStringExtra("data1");
mTextView.setText(mString);
然后数据返回 关闭Activity
Intent mIntent =
new Intent();
mIntent.putExtra("data2",
"this is from StringActivity");
setResult(2, mIntent);
finish();
(2) Intent 传递 List
MainActivity发送数据
List<String> mList =
new ArrayList<String>();
mList.add("hello");
Intent mIntent =
new Intent(MainActivity.this,SecondActivity.class);
mIntent.putExtra("data",
"datalist");
mIntent.putStringArrayListExtra("list", (ArrayList<String>) mList);
startActivityForResult(mIntent, 1);
接收的时候,可以通过key 判断数据是否接收成功。以区别不同的发起端。因为这里不能接收Intent的发送Code
Intent mIntent = getIntent();
String mString = mIntent.getStringExtra("data");
String mString2 = mIntent.getStringExtra("xxx");
ArrayList<String> mArrayList = mIntent.getStringArrayListExtra("list");
Log.i("SecondActivity", mString);
if(!TextUtils.isEmpty(mString2)){
Log.i("SecondActivity", mString2);
}else{
Log.i("SecondActivity",
"Null");
}
Log.i("SecondActivity", mArrayList.toString());
(3) Intent 传递对象
发送。Person实例必须要实现 序列化的接口。
Person mPerson =
new Person("小明", 16);
Bundle mBundle =
new Bundle();
mBundle.putSerializable("data", mPerson);
Intent mIntent =
new Intent(MainActivity.this,ObjectActivity.class);
mIntent.putExtras(mBundle);
startActivityForResult(mIntent, 1);
接收
Intent mIntent = getIntent();
Person mPerson = (Person)mIntent.getSerializableExtra("data");
if(mPerson !=
null){
Log.i("ObjectActivity", mPerson.toString());
}
(4) Intent 传递List<对象>
发送
List<Person> mList =
new ArrayList<Person>();
Person mPerson =
new Person("小明", 16);
Person mPerson1 =
new Person("小兰", 17);
mList.add(mPerson);
mList.add(mPerson1);
Intent mIntent =
new Intent(MainActivity.this,ObjectActivity.class);
mIntent.putExtra("listobj",(Serializable)mList);
startActivityForResult(mIntent, 1);
接收:
List<Person> mList =
(List<Person>) mIntent.getSerializableExtra("listobj");
for (int i = 0; i < mList.size(); i++) {
Log.i("ObjectActivity", mList.get(i).toString());
}
(5) Application 共享全局数据
子类的定义一定不要重写构造方法。不然不能实例化成功。
public class MyAppClass
extends Application {
private String
textString;
public String getTextString() {
return
textString;
}
public
void setTextString(String textString) {
this.textString = textString;
}
@Override
public String toString() {
return
"MyAppClass [textString=" + textString +
"]";
}
}
Manifest中添加注册信息:
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:name=".MyAppClass">
多了最后一行。
发送
MyAppClass myAppClass = (MyAppClass)getApplication();
myAppClass.setTextString("123");
接收
MyAppClass myAppClass = (MyAppClass)getApplication();
String msg = myAppClass.getTextString();
相关文章推荐
- Android开发中,调用removeView报NullpointerException错
- 点击Android Virtual Device Manager没有反应
- android button 透明背景色
- android5.0(Lollipop) BLE Peripheral牛刀小试
- Android淘宝电影日期滚动栏的实现
- android studio 清除无用资源,缩减apk大小!
- Android 快速模糊
- ThinkAndroid框架
- android平台webrtc编译
- android camera surface不显示图像问题
- android程序异常中止
- Android错误:java.lang.ExceptionInInitializerError,java.lang.UnsatisfiedLink
- Android调用天气预报所对应的城市Id
- Android:自定义标题栏(titlebar)
- Android应用开发提高篇(3)-----传感器(Sensor)编程(转)
- Android压缩图片到100K以下并保持不失真的高效方法
- Android中ksoap实现SOAP远程调用,支持字符串、数值、日期类型参数
- Android开发
- Android的context浅析
- Android学习笔记之Logcat流