Activity之间的数据交换Intent和Bundle区别

首先上效果图


首先给大家介绍一下Intent(顾名思义意图)也就是你要到达的目的地

主要分为两种一种是显示意图,另外一种是隐式意图。

例如显示意图即在构造Intent对象时就指定接收者,这种方式与普通的函数调用类似,只是复用的粒度有所差别;

Intent intent=new Intent(this,FirstActivity.class);

startActivity(intent);

隐式意图包括很多需要的可以查Android API这里是一部分即Intent的发送者在构造Intent对象时,并不知道也不关心接收者是谁,这种方式与函数调用差别比较大,有利于降低发送者和接收者之间的耦合。另外Intent除了发送外,还可用于广播等。


Intent intent=new Intent(Intent.ACTION_DIAL,Uri.prase("tel:88888888");

startActivity(intent);

这里就是一个隐式打电话的uri跳转到拨号界面,需要注意记得在AndroiddMainfest.xml添加权限

 <uses-permission android:name="android.permission.CALL_PHONE"/>

需要了解自己点击连接查看API http://cs.szpt.edu.cn/android/

另外一个例子如果我现在有Activity A ,B ,C;
现在我要把值通过A经过B传给C
你怎么传 如果用Intent的话 A-B先写一遍 再在B中都取出来 然后在把值塞到Intent中 再跳到C 多麻烦
如果我在A中用了 Bundle 的话  我把Bundle传给B 在B中再转传到C  C就可以直接去了 
这样的话 还有一个好处 就是在B中 还可以给Bundle对象添加新的 key - value 同样可以在C中取出来

Android中提供了Intent机制来协助应用间的交互与通讯,或者采用更准确的说法是,Intent不仅可用于应用程序之间,也可用于应用程序内部的Activity/Service之间的交互。Intent这个英语单词的本意是“目的、意向、意图”等,对于较少从事于大型平台开发工作的程序员来说,这可能是一个不太容易理解的抽象概念,因为它与我们平常使用的简单函数/方法调用,或者上节中提到的通过库调用接口的方式不太一样。在Intent的使用中你看不到直接的函数调用,相对函数调用来说,Intent是更为抽象的概念,利用Intent所实现的软件复用的粒度是Activity/Service,比函数复用更高一些,另外耦合也更为松散。


下面举个例子

IntentActivity跳转到ResultActivity

第一种是Bundle

public void get(View v){
Intent intent=new Intent(this, ResultActivity.class);
Bundle bundle=new Bundle();
bundle.putString("name","张三");
bundle.putInt("age",40);
//绑定一个bundle对象
intent.putExtras(bundle);

startActivity(intent);
finish();
}

ResultActivity

private void initView() {
// TODO Auto-generated method stub
tv_result=(TextView) findViewById(R.id.tv_result);
Intent intent=getIntent();
if(intent!=null){
String name=intent.getStringExtra("name");
int  age=intent.getIntExtra("age", 0);
tv_result.setText("name= "+ name +" age= "+age);
Log.i("info:", tv_result.getText().toString().trim());
}

}


第二种是Intent

public void get(View v){
Intent intent=new Intent(this, ResultActivity.class);
                    intent.putExtra("name", "tom");

        intent.putExtra("age", 30);
startActivity(intent);
finish();
}

Log日志


完工了!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值