Android页面跳转深度解析:Activity、Intent与Bundle的使用
“此文档详细介绍了Android中页面跳转的核心组件Activity和Intent的使用,并深入剖析了Bundle类在数据传递中的作用。” 在Android开发中,页面间的跳转是应用程序交互的基础,主要通过Activity和Intent这两个关键组件来实现。Activity是Android应用中的一个窗口,它可以显示用户界面并与用户进行交互。Intent则扮演着连接各个Activity的角色,它负责传递信息,驱动应用的流程。 Activity的启动通常有两种方式:标准启动(Standard)和单实例启动(SingleTop)。标准启动会每次创建一个新的Activity实例,而单实例启动则会在任务栈顶存在时复用已有实例。在AndroidManifest.xml文件中,我们可以通过<activity>标签来配置Activity的各种属性,包括其主题、启动模式等。 Intent是用来启动或启动一个操作的意图声明,它可以启动Activity或者Service。在启动Activity时,Intent通常包含目标Activity的信息以及需要传递的数据。例如,通过以下代码我们可以启动一个新的Activity并传递数据: ```java Intent intent = new Intent(MainActivity.this, NewActivity.class); Bundle bundle = new Bundle(); bundle.putString("name", "传智播客"); bundle.putInt("age", 4); intent.putExtras(bundle); startActivity(intent); ``` 在这段代码中,我们首先创建了一个Intent实例,然后创建了一个Bundle对象来存储数据。Bundle类似于Map,可以存储各种类型的数据,如字符串、整数等。它提供了丰富的putXxx()和getXxx_r()方法,方便地进行数据的存取。例如,`putString()`用于存放字符串,`getString_r()`用于取出字符串。在内部,Bundle实际上使用HashMap来存储这些数据。 在接收端,我们可以通过`getIntent().getExtras()`来获取传递过来的Bundle对象,然后通过键值对的方式取出数据: ```java Bundle bundle = this.getIntent().getExtras(); String name = bundle.getString("name"); int age = bundle.getInt("age"); ``` 此外,Intent还有一个重要的特性,即请求码(requestCode)。当我们需要从启动的Activity返回结果时,可以使用`startActivityForResult(Intent intent, int requestCode)`方法。请求码是一个自定义的整数,用于标识哪个请求来源。例如,同一个Activity中有两个按钮分别启动同一个Activity,通过不同的请求码,我们可以在回调方法`onActivityResult(int requestCode, int resultCode, Intent data)`中区分是哪个按钮触发的启动。 Activity、Intent和Bundle共同构成了Android中页面跳转和数据传递的主要机制。理解并熟练掌握它们的使用,对于开发高效、流畅的Android应用至关重要。
剩余12页未读,继续阅读