AndroidStudio通过Bundle进行数据传递

作者:CSDN-PleaSure乐事

欢迎大家阅读我的博客 希望大家喜欢

使用环境:AndroidStudio

目录

1.新建活动

2.修改页面布局

代码:

效果:

3.新建类ResultActivity并继承AppCompatActivity

4.新建布局文件activity_result.xml

代码:

5.修改MainActivity和ResultActivity代码

6.最终效果展示


1.新建活动

新建一个工程LabActivityDataTransfer(也可以是你自己创建的活动),允许AndroidStudio帮我们自动创建活动,创建的活动名布局名为默认值(MainActivity和activity_main.xml)。

2.修改页面布局

在activity_main.xml中我们可以修改页面布局,例如我们按照如下方法,就可以写出一个最基本的手机用户信息的界面:

代码:

java 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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:id="@+id/main"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity"
    android:layout_marginTop="30dp">
    <TextView
        android:id="@+id/tx_1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="请输入你的注册信息"
        android:textSize="30dp"
        />
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/tv2"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:text="用户名:"
            android:textSize="18sp"
            />

        <EditText
            android:id="@+id/name"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:hint="请填写您想要注册的账号"
            android:textSize="18sp"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        >
        <TextView
            android:id="@+id/tv1"
            android:layout_width="wrap_content"
            android:layout_height="50dp"
            android:text="   密码:"
            android:textSize="18sp"
            />

        <EditText
            android:id="@+id/password"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:inputType="number"
            />
    </LinearLayout>
    <LinearLayout
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:id="@+id/tx_4"
            android:layout_width="match_parent"
            android:layout_height="50dp"
            android:text="   性别:"
            android:textSize="18sp"
            />
        <RadioGroup
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal"
            >
            <RadioButton
                android:id="@+id/male"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="男"
                android:textSize="18sp" />
            <RadioButton
                android:id="@+id/female"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:text="女"
                android:textSize="18sp" />
        </RadioGroup>
    </LinearLayout>
    <Button
        android:id="@+id/register"
        android:layout_width="match_parent"
        android:layout_height="50dp"
        android:text="注册" />
</LinearLayout>

效果:

3.新建类ResultActivity并继承AppCompatActivity

在ResultActivity当中,我们需要重写onCreate()方法,在其中加载布局activity_result。

4.新建布局文件activity_result.xml

新建布局文件activity_result.xml的目的是用来接收传来的数据,用TextView显示接收到的注册信息。

代码:

java 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">
    <TextView
        android:id="@+id/textName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
        android:id="@+id/textPasswd"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        />
    <TextView
    android:id="@+id/textGender"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
        />
</LinearLayout>

随后在mainfest文件当中注册ResultActivity:

java 复制代码
<activity android:name=".ResultActivity"></activity>

5.修改MainActivity和ResultActivity代码

修改MainActivity中的代码,获取注册数据并保存到Bundle对象,将其放入Intent传递给下一个活动ResultActivity。

java 复制代码
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        EdgeToEdge.enable(this);
        setContentView(R.layout.activity_main);
        Button btn_reg=(Button)findViewById(R.id.register);
        btn_reg.setOnClickListener(new View.OnClickListener () {
            @Override
            public void onClick(View view) {
                EditText name =(EditText)findViewById(R.id.name);
                EditText passwd = (EditText)findViewById(R.id.password);
                RadioButton male = (RadioButton) findViewById(R.id.male);
                String gender = male.isChecked()?"男":"女";
                // 创建 Bundle 对象并添加数据
                Bundle bundle = new Bundle();
                bundle.putString("name", name.getText().toString());
                bundle.putString("password", passwd.getText().toString());
                bundle.putString("gender", gender);

                // 创建 Intent 并设置目标活动
                Intent intent = new Intent(MainActivity.this, ResultActivity.class);
                intent.putExtras(bundle); // 将 Bundle 放入 Intent

                // 启动 ResultActivity
                startActivity(intent);
            }
        });
        ViewCompat.setOnApplyWindowInsetsListener(findViewById(R.id.main), (v, insets) -> {
            Insets systemBars = insets.getInsets(WindowInsetsCompat.Type.systemBars());
            v.setPadding(systemBars.left, systemBars.top, systemBars.right, systemBars.bottom);
            return insets;
        });
    }

随后ResultActivity代码,在onCreate()方法中获取注册数据并显示。

java 复制代码
@Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
        Bundle bundle = getIntent().getExtras();

        if (bundle != null) {
            // 从 Bundle 中获取数据
            String name = bundle.getString("name");
            String password = bundle.getString("password");
            String gender = bundle.getString("gender");
            // 找到布局中的 TextView
            TextView textName = findViewById(R.id.textName);
            TextView textPassword = findViewById(R.id.textPasswd);
            TextView textGender = findViewById(R.id.textGender);
            // 设置数据到 TextView
            if (textName != null) {
                textName.setText(name);
            }
            if (textPassword != null) {
                textPassword.setText(password);
            }
            if (textGender != null) {
                textGender.setText(gender);
            }
        }
    }

这样也就完成了数据传递。

6.最终效果展示

7.注意点

我们在本次试验中一定要注意数据的接收等,同时要保证对各个ID的设置,避免混淆等情况的出现。最开始博主就是ID各种设错导致数据没有正常传递。

同时我们使用liner线性布局的时候要注意横向和纵向的区别。最开始博主不小心把纵向的设置为横向了,导致最后数据显示已经有了,当时被挤到屏幕外了,一度非常尴尬。

作者:CSDN-PleaSure乐事

希望我的博客对您有帮助,也希望在对您有帮助时您可以为我留下点赞收藏与关注,这对我真的很重要,谢谢!

相关推荐
forNoWhat8 分钟前
java小知识点:比较器
java·开发语言
西洼工作室14 分钟前
【java 正则表达式 笔记】
java·笔记·正则表达式
40岁的系统架构师16 分钟前
1 JVM JDK JRE之间的区别以及使用字节码的好处
java·jvm·python
皓木.16 分钟前
(自用)配置文件优先级、SpringBoot原理、Maven私服
java·spring boot·后端
舞者H19 分钟前
启动异常:Caused by: java.lang.IllegalStateException: Failed to introspect Class
java
工程师老罗19 分钟前
Android笔试面试题AI答之Android基础(1)
android
代码中の快捷键20 分钟前
java开发面试有2年经验
java·开发语言·面试
壹佰大多23 分钟前
【spring-cloud-gateway总结】
java·spring·gateway
CodeChampion24 分钟前
60.基于SSM的个人网站的设计与实现(项目 + 论文)
java·vue.js·mysql·spring·elementui·node.js·mybatis
谢家小布柔26 分钟前
Java 中的字符串
java·开发语言