安卓采用Intent切换activity

简介: 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。

运行截图:

网络异常,图片无法展示
|


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。

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

目录
相关文章
|
2月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
94 6
|
2月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
Android面试高频知识点(4) 详解Activity的启动流程
31 3
|
2月前
|
缓存 前端开发 Android开发
Android实战之如何截取Activity或者Fragment的内容?
本文首发于公众号“AntDream”,介绍了如何在Android中截取Activity或Fragment的屏幕内容并保存为图片。包括截取整个Activity、特定控件或区域的方法,以及处理包含RecyclerView的复杂情况。
26 3
|
5月前
|
Android开发
Android面试题之Activity的启动模式和flag
Android Activity的四种启动模式:standard(默认,每次启动创建新实例),singleTop(栈顶复用,不走onCreate,调用onNewIntent),singleTask(栈内唯一,清除上方Activity)和singleInstance(单独栈内唯一)。启动模式在AndroidManifest.xml中配置,Intent Flags如FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_SINGLE_TOP可实现类似功能。了解这些对于处理Activity栈管理至关重要。
55 0
|
2月前
|
Android开发
Android面试之Activity启动流程简述
Android面试之Activity启动流程简述
20 0
|
3月前
|
消息中间件 Android开发 索引
Android面试高频知识点(4) 详解Activity的启动流程
讲解Activity的启动流程了,Activity的启动流程相对复杂一下,涉及到了Activity中的生命周期方法,涉及到了Android体系的CS模式,涉及到了Android中进程通讯Binder机制等等, 首先介绍一下Activity,这里引用一下Android guide中对Activity的介绍:
59 4
|
2月前
|
存储 大数据 数据库
Android经典面试题之Intent传递数据大小为什么限制是1M?
在 Android 中,使用 Intent 传递数据时存在约 1MB 的大小限制,这是由于 Binder 机制的事务缓冲区限制、Intent 的设计初衷以及内存消耗和性能问题所致。推荐使用文件存储、SharedPreferences、数据库存储或 ContentProvider 等方式传递大数据。
88 0
|
4月前
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
108 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
3月前
|
Android开发 开发者
Android面试之Activity启动流程简述
每个Android开发者都熟悉的Activity,但你是否了解它的启动流程呢?本文将带你深入了解。启动流程涉及四个关键角色:Launcher进程、SystemServer的AMS、应用程序的ActivityThread及Zygote进程。核心在于AMS与ActivityThread间的通信。文章详细解析了从Launcher启动Activity的过程,包括通过AIDL获取AMS、Zygote进程启动以及ActivityThread与AMS的通信机制。接着介绍了如何创建Application及Activity的具体步骤。整体流程清晰明了,帮助你更深入理解Activity的工作原理。
59 0
|
4月前
|
开发工具 Android开发
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
解决Manifest merger failed : android:exported needs to be explicitly specified for <activity>
105 1