1、显式Intent****
(1)重新创建一个SecondActivity(记得注册),在布局文件加入文本框显示内容“SecondActivity”。
(2)在MainActivity对于的布局文件中增加一个命令按钮,名称为“startSecondActivity”
(3)给步骤(2)添加的命令按钮增加监听事件,并在监听事件中通过Intent启动SecondActivity实现跳转:
Intent intent = new Intent(MainActivity.this, SecondActivity.class); //第一个参数表示当前的Activity,第二个参数表示要启动的Activity startActivity(intent);//调动SecondActivity方法启动 *//从布局文件获取控件 Button**\ *Button button=(Button) findViewById(R.id.***button2***);\ button.setOnClickListener(**new** View.OnClickListener() { @Override\ **public void** onClick(View view) {\ *//弹出消息提示框**\ **//记得用show();**\ ***Toast.*makeText*(MainActivity.**this**, **"startSecondActivity"** , Toast.***LENGTH_LONG***).show();\ *//使用Intent显示 启动activity**\ ***Intent intent =**new** Intent(MainActivity.**this**,SecondActivity.**class**);\ startActivity(intent);\ **}\ });;
(1) 运行项目,验证点击命令按钮能否切换到SecondActivity。
运行截图:
2、隐式Intent****
隐式Intent并不能实现直接跳转,需要指定两个条件(intent-filter):action和category。
如果在intent-filter中指定category为default的category,即android.intent.category.DEFAULT,则只需满足action条件即可。
intent-filter在注册activity时添加,注册方法如下:
跳转方法为:
Intent intent=new Intent("com.example.demo1activity.SECOND_START");
startActivity(intent);
//Intent隐式*
***Intent intent =new Intent( "com.example.demo1activity.SECOND_START" );
intent.addCategory( "com.example.activitytest.MY_CATEGORY" );
startActivity(intent);
intentfilter中只能有一个action,但可以有多个category,满足其中一个category即可。
3、隐式Intent的其他用法****
使用隐式intent,不但可以打开自己编写的activity,还可以打开系统编写的activity,比如浏览器,打电话等。
//隐式Intent的其他用法,还可以打开系统编写的activity,比如浏览器*
*Intent intent =new Intent(Intent.ACTION_VIEW); intent.setData(Uri.parse( "www.baidu.com" )); startActivity(intent);
解释:
Intent.ACTION_VIEW是系统内置的动作,打开浏览器;
setData()将一个Uri对象传入intent,用于指定该intent正在操作的数据,这些数据都是用Uri.parse()将字符串转换为Uri产生的。
在intent-filter中,添加标签,用于精确指定该activity能响应的数据类型,包括
android:scheme用于指定数据的协议部分,比如http。
该方法还可以打电话、显示地理位置等。