隐式意图和显式意图(重点)
隐式意图:
在开启目标activity时,不需要直接指定目标activity的名称,通过指定一组动作、数据、类型等属性,让系统从清单文件中匹配指定的acitivity来开启activity。
模版代码:
//创建一个开启第二个界面的意图
Intent intent = new Intent();
//设置目标activity的动作
intent.setAction("com.itheima..multiview.SECONDSHOW");
//设置目标activity的数据
intent.setData(Uri.parse("itheima://110"));
//设置目标activity的类型
intent.addCategory("android.intent.category.DEFAULT");
应用场景:开启其他应用程序中的组件时使用隐式意图;
显式意图:在开启目标activity时需要直接指定目标activity名称;
模版代码:
//创建一个显示意图开启第二个界面
Intent intent = new Intent(this, SecondActivity.class);
//开启一个新的界面
startActivity(intent);
应用场景:开启应用程序内部的activity;
##05_意图传递数据(重点)
从第一个界面传递一些数据给第二个界面,在第二个界面上显示出来;
intent可以传递的数据类型:
1.八大基本类型及其数组
2.parcelable
3.Serializable
4.Bundle
5.Intent
putExtra()
putExtras()
代码:
传递数据:
//创建一个显示意图开启第二个界面
Intent intent = new Intent(this, SecondActivity.class);
//把需要提交的数据封装到意图对象中
// intent.putExtra("name", "itheima");
// intent.putExtra("age", 4);
//
Bundle b = new Bundle();
b.putString("name", "itheima");
b.putInt("age", 4);
intent.putExtra("info", b);
//开启一个新的界面
startActivity(intent);
接收数据:
Intent intent = getIntent();
//
// String name = intent.getStringExtra("name");
// int age = intent.getIntExtra("age", 0);
Bundle b = intent.getBundleExtra("info");
String name = b.getString("name");
int age = b.getInt("age");
tv.setText("name:"+name+";age:"+age);