您的位置:首页 > 移动开发 > Android开发

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();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: