Android组建1:Intent的使用

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();














评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值