传递数据
/**
* 隐式跳转至第二个activity
*
* @param v
*/
public void click4(View v) {
// 方式一可行 同在一个intent-filter下
Intent intent = new Intent();
intent.setAction("com.example.activeswitch.second");
intent.setDataAndType(Uri.parse("hello:123"), "text/username");
startActivity(intent);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
Uri uri = intent.getData(); // hello:123
String type = intent.getType(); // text/username
}
// 第一个Activity
public void click7(View v) {
Intent intent = new Intent();
intent.setAction("com.example.activeswitch.second");
// 方式一
intent.putExtra("username", "hello world");
intent.putExtra("password", "android");
// 方式二
Bundle bundle = new Bundle();
bundle.putString("username", "hello android");
bundle.putString("password", "123");
intent.putExtras(bundle);
startActivity(intent);
}
//第二个Activity
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Intent intent = getIntent();
//方式一
/*String username = intent.getStringExtra("username");
String password = intent.getStringExtra("password");*/
//方式二
Bundle bundle = intent.getExtras();
String username = bundle.getString("username");
String password = bundle.getString("password");
System.out.println("username:" + username + " password:" + password);
}
应用场景
- 显示意图: 启动同一个应用中Activity
- 隐式意图: 启动不在同一个应用中的Activity
- 在启动效率中,隐式效率远远低于显示意图
- 如果系统中有多个Activity与意图设置的action匹配,那么在启动Activity时,会弹出一个对话框,里面包含所有匹配的Activity