Android学习笔记——Intent

Intent中文翻译为“意图”,它是Android程序中各个组件进行交互的一种重要方式,它不仅可以指定当前组件要执行的动作,还可以在不同组件之间进行数据传递。Intent一般用于启动Activity、启动服务、发送广播等,承担了Android应用程序三大核心组件相互间的通信功能。

Intent启动Activity的方法有:

startActivity(Intent intent) 
startActivityForResult(Intent intent,int code) 

1.Android中Intent寻找目标组件的两种方式
显式意图:即在通过Intent启动Activity时,需明确指定激活组件的名称。如果需要在本应用中启动其他的Activity时,可以使用显式意图来启动Activity。

Intent intent = new Intent(this, Activity02.class);      
startActivity(intent);  

显式意图还可以根据目标组件的包名、全路径名来指定开启组

intent.setClassName("cn.itcast.xxx","cn.itcast.xxx.xxxx");
startActivity(intent);

隐式意图:没有明确指定组件名的Intent称为隐式意图。系统会根据隐式意图中设置的动作(action)、类别(category)、数据(Uri和数据类型)找到最合适的组件。
清单文件AndroidManifest.xml中:

<activity android:name="com.itcast.intent.Activity02">
     <intent-filter>
          <action android:name="cn.itscast.xxx"/>
          <category android:name="android.intent.category.DEFAULT"/>
     </intent-filter>
</activity>

使用隐式意图开启Activity的示例代码如下所示:

Intent intent = new Intent();
// 设置动作和清单文件一样
intent.setAction("cn.itscast.xxx");
startActivity(intent);  

标签指明了当前Activity可以响应的动作为”cn.itscast.xxx”,而标签则包含了一些类别信息,只有当和中的内容同时匹配时,Activity才会被开启。

2.Intent实现Activity之间的数据传递,回传
Intent不仅可以用来开启Activity,也可以在Activity之间传递数据。在数据传递时,可以使用putExtra()方法将数据存储在Intent中。
Activity01.java传递数据:

String data = "Hello Activity02"
Intent intent = new Intent(this,Activity02.class);
intent.putExtra("extra_data",data);
startActivity(intent);

将数据从Activity02中取出:

Intent intent = getIntent();
String data = = intent.getStringExtra("extra_data");

putExtra()不仅可以传递基本类型数据,还可以传递Bundle对象。

Bundle bundle = new Bundle();
bundle.putString("name", "Linda");
Intent intent = new Intent(this,Activity02.class);
intent.putExtra(bundle);
startActivity(intent);
将数据从Activity02中取出 
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
String stuName = bundle.getString("name");

两个Activity之间实现数据回传代码:

Activity01:

Intent intent=new Intent(this,activity02.class);
startActivityForResult(intent,1);

Activity02:

Intent intent=new Intent();
intent.putExtra(“extra_data”,”Hello Activity01”);
setResult(1,intent);
finish();

Activity01:

protected void onActivityResult(int requestCode,int resultCode,Intent data){
super.onActivityResult(requestCode,resultCode,data);
If(resultCode==1){
String data=data.getStringExtra(“extra_data”);
Log.i(“Activity01”,data);
}
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值