目录
3.3 使用 Intent 在 Activity 之间穿梭
3.3.1 使用显式 Intent
3.3.2 使用隐式 Intent
3.3.3 更多隐式 Intent 的用法
3.3.4 向下一个 Activity 传递数据
3.3.5 返回数据给上一个 Activity
3.3 使用 Intent 在 Activity 之间穿梭
只有一个 Activity 的应用也太简单了吧?没错,你的追求应该更高一点。不管你想创建多少个 Activity ,方法都和上一节中介绍的是一样的。唯一的问题在于,你在启动器中点击应用的图标只会进入该应用的主Activity ,那么怎样才能由主 Activity 跳转到其他 Activity 呢?我们现在就 一起来看一看。
3.3.1 使用显式 Intent
你应该已经对创建 Activity 的流程比较熟悉了,那我们现在在 ActivityTest 项目中再快速地创 一个 Activity 。
还是右击 com.example.activitytest 包→New→Activity→Empty Activity ,会弹出一个创建 Activity 的对话框,这次我们命名为 SecondActivity ,并勾选 Generate Layout File ,给布局 文件起名为 second_layout ,但不要勾选 Launcher Activity 选项,如 图3.15 所示。
图3.15 创建 SecondActivity
点击“Finish” 完成创建,Android Studio 会为我们自动生成 SecondActivity.kt 和 second_layout.xml 这两个文件。不过自动生成的布局代码目前对你来说可能有些难以理解, 这里我们还是使用比较熟悉的 LinearLayout ,编辑 second_layout.xml ,将里面的代码替换成如下内容:
xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".SecondActivity">
我们还是定义了一个按钮,并在按钮上显示Button 2 。
SecondActivity 中的代码已经自动生成了一部分,我们保持默认不变即可,如下所示:
class SecondActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.second_layout)
}
}
另外不要忘记,任何一个 Activity 都是需要在 AndroidManifest.xml 中注册的。不过幸运的 是,Android Studio 已经帮我们自动完成了,你可以打开 AndroidManifest.xml 瞧一瞧:
android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" android:fullBackupContent="@xml/backup_rules" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.ActivityTest" tools:targetApi="31"> android:name=".SecondActivity" android:exported="false" /> android:name=".FirstActivity" android:exported="true" android:label="This is FirstActivity">
由于 SecondActivity 不是主 Activity ,因此不需要配置标签里的内容,注册 Activity 的代码也简单了许多。现在第二个 Activity 已经创建完成,剩下的问题就是如何去启动它了,这里我们需要引入一个新的概念:Intent 。
Inte
文章链接
发表评论