将数据发送到另一个 Activity 就是这么简单 - Android?
在这篇文章中,我们将学习将数据从一个activity传递到另一个activity。
android中如何将数据data从一个activity传递到另一个activity?
在 Android 中的 Activity 之间传递数据需要使用 Intent 类。使用 Intent 类的 putExtra 方法,您可以将数据从一个 Activity 发送到 Android 中的另一个 Activity。
intent是用于在 android 中启动 Activity 的类。
现在,让我们看看如何在android中使用intent发送数据。
我将创建一个包含两个activity的简单应用程序。第一个activity包含两个输入字段 (EditText) 和一个按钮button。第一个输入字段用于名称,第二个输入字段用于电子邮件,按钮是确认按钮,按下该按钮会将名称和电子邮件添加到intent(使用 Intent.putExtra() 方法)并启动第二个activity。现在让我们看一下代码。
activity_first.xml
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/user_name"
android:layout_width="317dp"
android:layout_height="54dp"
android:hint="User name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.293" />
<EditText
android:id="@+id/email"
android:layout_width="317dp"
android:layout_height="54dp"
android:layout_marginTop="40dp"
android:hint="Email"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.498"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/user_name" />
<Button
android:id="@+id/btn_confirm"
android:layout_width="317dp"
android:layout_height="54dp"
android:text="Confirm"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/email"
app:layout_constraintVertical_bias="0.174" />
</androidx.constraintlayout.widget.ConstraintLayout>
FirstActivity.java
package com.example.androidintentexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btnConfirm = findViewById(R.id.btn_confirm);
EditText name = findViewById(R.id.user_name);
EditText email = findViewById(R.id.email);
btnConfirm.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent intent = new Intent(getApplicationContext(), MainActivity2.class);
intent.putExtra("Name", name.getText().toString());
intent.putExtra("Email", email.getText().toString());
startActivity(intent);
}
});
}
}
你可以在上面的代码中看到我使用了Intent类的putExtra方法。该方法将名称和值作为参数(名称-值对)。例如,为了将电子邮件输入发送到另一个activity,我使用了名称“Email”电子邮件。我将在第二个activity中引用该名称来获取与该名称关联的值。
activity_second.xml
<?xml version="1.0" encoding="utf-8"?>
<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:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity2">
<TextView
android:id="@+id/user_name_label"
android:layout_width="123dp"
android:layout_height="39dp"
android:layout_marginTop="156dp"
android:text="Name :"
android:textSize="24sp"
app:layout_constraintEnd_toStartOf="@+id/show_user_name"
app:layout_constraintHorizontal_bias="0.645"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/show_user_name"
android:layout_width="224dp"
android:layout_height="39dp"
android:layout_marginTop="156dp"
android:layout_marginEnd="16dp"
android:text="TextView"
android:textSize="24sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/email_label"
android:layout_width="123dp"
android:layout_height="39dp"
android:layout_marginStart="24dp"
android:text="Email :"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/user_name_label"
app:layout_constraintVertical_bias="0.128" />
<TextView
android:id="@+id/show_email"
android:layout_width="224dp"
android:layout_height="39dp"
android:layout_marginEnd="16dp"
android:text="TextView"
android:textSize="24sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/show_user_name"
app:layout_constraintVertical_bias="0.128" />
</androidx.constraintlayout.widget.ConstraintLayout>
SecondActivity.java
package com.example.androidintentexample;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.widget.TextView;
public class MainActivity2 extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
TextView showName = findViewById(R.id.show_user_name);
TextView showEmail = findViewById(R.id.show_email);
Intent intent = getIntent();
showName.setText(intent.getStringExtra("Name"));
showEmail.setText(intent.getStringExtra("Email"));
}
}
在这里,我使用了 getIntent 方法来获取 Intent 对象,然后,为了获取数据,我使用了 Intent 类的 getStringExtra() 方法。 getStringExtra 方法将与数据关联的名称(字符串)作为参数。
输出 :