Android Bundle 详解及实例

我们知道,Intents 在 Android 中用于在 Activity 之间传递数据。但是,还有另一种更好的方式,可以用更少的代码量在 Activity 之间传递数据,那就是使用 Android 中的 Bundle。Android Bundle 主要用于将数据从一个 Activity 传递到另一个 Activity。这里基本上使用了键值对的概念,想要传递的数据作为 Map 的值,稍后可以通过键来检索。Bundle 与 Intent 结合使用,值的发送和检索方式与 Intent 的情况相同。这取决于用户想要传递什么类型的值,但 Bundle 可以容纳所有类型的值,并可以传递给新的 Activity。

以下是传入/传出 Bundle 的主要类型:

> putInt(String key, int value), getInt(String key, int value)

>

> putString(String key, String value), getString(String key, String value)

>

> putStringArray(String key, String[] value), getStringArray(String key, String[] value)

>

> putChar(String key, char value), getChar(String key, char value)

>

> putBoolean(String key, boolean value), getBoolean(String key, boolean value)

在 Android 应用中使用 Bundle

在 Android 中,Bundle 总是与 Intent 一起使用。现在,为了使用 Bundle,让我们在 MainActivity 中编写以下代码。

Java


CODEBLOCK_b0550875

Kotlin


CODEBLOCK_f17d042e

现在创建另一个名为 SecondActivity 的空 Activity。现在要检索存储在 Bundle 中的数据,请在 SecondActivity 中编写以下代码。

Java


CODEBLOCK_9cf2a995

Kotlin


CODEBLOCK_7cb1a9c9

或者,如果不想使用默认值,也可以这样做,但请记住它可能会引发异常。

> 例如:boolean b = bundle.getBoolean("pass the key here");

如果不存在与该键对应的映射,则可能导致 NullPointerException。因此,建议为 Bundle 添加默认值。

步骤 1:创建一个新项目

  • 点击 File,然后点击 New => New Project。
  • 选择 Empty activity
  • 选择语言为 Java/Kotlin
  • 根据需要选择最低 SDK。

步骤 2:使用 activity_main.xml 文件

现在让我们在应用中添加两个 Button,一个按钮将传递存储在 Bundle 中的数据,另一个按钮将传递空的 Bundle,即使用 bundle.clear() 清除 Bundle,然后将 Bundle 传递给 Intent。下面给出了 activity_main.xml 文件的完整代码。在这里,我们可以看到第一个按钮用于传递非空的 Bundle,而第二个按钮用于传递空的 Bundle。

XML


<androidx.constraintlayout.widget.ConstraintLayout

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:layoutwidth="matchparent"

android:layoutheight="matchparent"

android:padding="10dp"

tools:context=".MainActivity">

<Button

android:id="@+id/btnPassBundles"

android:layout_width="275dp"

android:layout_height="101dp"

android:layout_marginTop="250dp"

android:text="Pass Data Into Bundle"

android:textSize="24sp"

app:layoutconstraintHorizontalbias="0.498"

app:layoutconstraintLefttoLeftOf="parent"

app:layoutconstraintRighttoRightOf="parent"

app:layoutconstraintToptoTopOf="parent" />

<Button

android:id="@+id/btnNoPassBundle"

android:layout_width="277dp"

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/49290.html
点赞
0.00 平均评分 (0% 分数) - 0