安卓采用Intent切换activity

178 阅读2分钟

「这是我参与2022首次更文挑战的第19天,活动详情查看:2022首次更文挑战

image.png Intent:Android程序中各组件之间进行交互的一种重要方式。可以指明当前组件 想要执行的动作,也可以在不同组件之间传递数据。如启动活动、启动服务、发送广播等。

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。

运行截图:

image.png

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即可。

 

image.png

image.png

 

 

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。

该方法还可以打电话、显示地理位置等。

跋尾

本篇内容就到这里了~ 我是Zeus👩🏻‍🚀来自一个互联网底层组装员,下一篇再见! 📖