【黑马程序员 Android移动开发 笔记】数据传递

这篇笔记详细介绍了在Android开发中如何使用Intent的putExtra()方法进行数据传递,包括字符串、整型等不同数据类型的传递方式。通过示例展示了用户注册信息如何从一个Activity传递到另一个Activity并显示出来,涵盖了数据的发送与接收过程。

1、Activity之间使用 Intent 的 putExtra() 方法传递数据。

2、putExtra() 方法包含两个参数,第一个参数(name)表示传递的数据名称,第二个参数(value)表示传递的数据信息。

3、如果想要获取该数据,可以通过 getStringExtra() / getIntExtra() / getBooleanExtra() 方法来实现。(具体使用哪一种方法取决于传递的数据类型)

传递数据:

Intent intent = new Intent(this, Activity2.class);
intent.putExtra("data", "Hello Activity2");
startActivity(intent);

获取数据:

Intent intent = getIntent();
String data = intent.getStringExtra("data");

【例子:将用户注册信息显示到另一个页面】

(1)用户注册页面

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_marginTop="150dp">
        <TextView
            android:text="账号:"
            android:textSize="25sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText
            android:id="@+id/et_account"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">
        <TextView
            android:text="密码:"
            android:textSize="25sp"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"/>
        <EditText
            android:id="@+id/et_password"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"/>
    </LinearLayout>

    <Button
        android:id="@+id/btn_send"
        android:text="注册"
        android:textSize="25sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>

</LinearLayout>

(2)信息显示页面

<?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:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".ShowActivity">

    <TextView
        android:id="@+id/tv_account"
        android:textSize="25sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginTop="150dp"
        android:layout_gravity="center"/>
    <TextView
        android:id="@+id/tv_password"
        android:textSize="25sp"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center"/>

</LinearLayout>

(3)数据传递代码

public class MainActivity extends AppCompatActivity {

    private EditText et_account, et_password;
    private Button btn_send;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        // 获取界面控件
        et_account = findViewById(R.id.et_account);
        et_password = findViewById(R.id.et_password);
        btn_send = findViewById(R.id.btn_send);

        // 给按钮设置点击事件
        btn_send.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                passData();
            }
        });
    }

    // 通过这个方法实现数据的传递
    private void passData(){
        // 创建意图对象
        Intent intent = new Intent(this, ShowActivity.class);
        // 把数据存入intent
        intent.putExtra("account", et_account.getText().toString().trim());
        intent.putExtra("password", et_password.getText().toString().trim());
        // 开启意图
        startActivity(intent);
    }
}

(4)获取数据代码

public class ShowActivity extends AppCompatActivity {

    private TextView tv_account, tv_password;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_show);

        // 获取开启此页面的意图对象
        Intent intent = getIntent();
        // 根据key取出对应的value值
        String account = intent.getStringExtra("account");
        String password = intent.getStringExtra("password");
        // 把账号和密码展示到控件上
        tv_account = findViewById(R.id.tv_account);
        tv_password = findViewById(R.id.tv_password);
        tv_account.setText("账号:" + account);
        tv_password.setText("密码:" + password);
    }
}

(5)运行结果

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值