📜  安卓 |如何将数据从一个活动发送到第二个活动

📅  最后修改于: 2022-05-13 01:54:47.585000             🧑  作者: Mango

安卓 |如何将数据从一个活动发送到第二个活动

先决条件:

  • 面向初学者的 Android 应用开发基础知识
  • 安装和设置 Android Studio 指南
  • 安卓 |从第一个 app/android 项目开始
  • 安卓 |运行您的第一个 Android 应用程序

本文旨在讲述和展示如何“使用 Intent 将数据从一个活动发送到第二个活动”。在这个示例中,我们有两个活动, activity_first是源活动, activity_second是目标活动。我们可以使用 putExtra() 方法从一个活动发送数据,并使用 getStringExtra() 方法从第二个活动获取数据。

例子:

在本示例中,使用一个 EditText 来输入文本。单击“发送”按钮时,此文本将发送到第二个活动。为此,Intent 将启动并运行以下方法:

  • putExtra()方法用于发送数据,键值对中的数据是变量名,可以是 Int、String、Float 等。
  • getStringExtra()方法用于获取通过上述方法发送的数据(键)。根据 value 的数据类型,还有其他方法,如getIntExtra()、getFloatExtra()

如何创建一个Android App在两个Activity之间发送和接收数据

第 1 步:首先创建一个新的 Android 应用程序。这将创建一个 XML 文件和一个Java文件。请参阅先决条件以了解有关此步骤的更多信息。

第 2 步:打开“activity_first_activity.xml”文件并在相对布局中添加以下小部件:

  • 用于输入消息的EditText
  • 发送数据的按钮

此外,将ID与其他属性一起分配给每个组件,如图像和下面的代码所示。为组件分配的 ID 有助于在Java文件中轻松找到和使用该组件。

句法:

android:id="@+id/id_name"

这里给定的ID如下:

  • 发送按钮:send_button_id
  • 输入EditText:send_text_id

这将制作应用程序的 UI。

第 3 步:现在,在 UI 之后,此步骤将创建应用程序的后端。为此,打开“first_activity. Java”文件并使用 findViewById() 方法实例化 XML 文件中的组件(EditText,发送按钮)。此方法借助分配的 ID 将创建的对象绑定到 UI 组件。

一般语法:

使用的组件的语法:

第 4 步:此步骤涉及设置发送和接收数据的操作。这些操作如下:

1.首先在发送按钮上添加监听器,该按钮将发送数据。这是按如下方式完成的:

单击此按钮后将执行以下操作。

2. 现在创建 String 类型的变量来存储用户输入的 EditText 的值。获取值并将其转换为字符串。这是按如下方式完成的:

3. 现在创建 Intent 对象 First_activity。 Java类到 Second_activity 类。这是按如下方式完成的:

其中 getApplicationContext() 将获取当前活动。

4.将putExtra方法中的值放入键值对中,然后启动活动。这是按如下方式完成的:

其中“str”是字符串值,键是“message_key”,此键将用于获取 str 值

第 5 步:现在我们必须创建一个 Second_Activity 来接收数据。
创建第二个活动的步骤如下:

第 6 步:现在打开您的第二个 xml 文件。
添加 TextView 以显示接收消息。将 ID 分配给 Textview。第二个活动如下图所示:

第 7 步:现在,打开您的第二个活动Java文件并执行以下操作。

1、定义TextView变量,使用findViewById()获取TextView如上图。

2. 现在在 second_activity。 Java文件创建 getTntent 对象,通过 getStringExtra 方法使用message_key接收 String 类型变量中的值。

3.第二个activity xml文件的TextView对象中设置的接收值

第 8 步:现在运行应用程序,操作如下:

  • 当应用程序打开时,它会显示一个“输入”EditText。输入发送的值。
  • 单击发送按钮,然后消息将显示在第二个屏幕上。

以下是应用程序的完整代码。

文件名:activity_first_activity.xml

XML


 
    
    


Java
package org.geeksforgeeks.navedmalik.sendthedata;
 
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class first_activity extends AppCompatActivity {
 
    // define the variable
    Button send_button;
    EditText send_text;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_activity);
        send_button = (Button)findViewById(R.id.send_button_id);
        send_text = (EditText)findViewById(R.id.send_text_id);
 
        // add the OnClickListener in sender button
        // after clicked this button following Instruction will run
        send_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
 
                // get the value which input by user in EditText
                // and convert it to string
                String str = send_text.getText().toString();
 
                // Create the Intent object of this class Context() to Second_activity class
                Intent intent = new Intent(getApplicationContext(), Second_activity.class);
 
                // now by putExtra method put the value in key, value pair
                // key is message_key by this key we will receive the value, and put the string
 
                intent.putExtra("message_key", str);
 
                // start the Intent
                startActivity(intent);
            }
        });
    }
}


XML


 
    
 


Java
package org.geeksforgeeks.navedmalik.sendthedata;
 
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
 
public class Second_activity extends AppCompatActivity {
 
    TextView receiver_msg;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second_activity);
 
        receiver_msg = (TextView)findViewById(R.id.received_value_id);
 
        // create the get Intent object
        Intent intent = getIntent();
 
        // receive the value by getStringExtra() method
        // and key must be same which is send by first activity
        String str = intent.getStringExtra("message_key");
 
        // display the string into textView
        receiver_msg.setText(str);
    }
}


文件名:First_Activity。Java

Java

package org.geeksforgeeks.navedmalik.sendthedata;
 
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
 
public class first_activity extends AppCompatActivity {
 
    // define the variable
    Button send_button;
    EditText send_text;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first_activity);
        send_button = (Button)findViewById(R.id.send_button_id);
        send_text = (EditText)findViewById(R.id.send_text_id);
 
        // add the OnClickListener in sender button
        // after clicked this button following Instruction will run
        send_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v)
            {
 
                // get the value which input by user in EditText
                // and convert it to string
                String str = send_text.getText().toString();
 
                // Create the Intent object of this class Context() to Second_activity class
                Intent intent = new Intent(getApplicationContext(), Second_activity.class);
 
                // now by putExtra method put the value in key, value pair
                // key is message_key by this key we will receive the value, and put the string
 
                intent.putExtra("message_key", str);
 
                // start the Intent
                startActivity(intent);
            }
        });
    }
}

文件名:activity_second_activity.xml

XML



 
    
 

文件名:Second_Activity。Java

Java

package org.geeksforgeeks.navedmalik.sendthedata;
 
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
 
public class Second_activity extends AppCompatActivity {
 
    TextView receiver_msg;
    @Override
    protected void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second_activity);
 
        receiver_msg = (TextView)findViewById(R.id.received_value_id);
 
        // create the get Intent object
        Intent intent = getIntent();
 
        // receive the value by getStringExtra() method
        // and key must be same which is send by first activity
        String str = intent.getStringExtra("message_key");
 
        // display the string into textView
        receiver_msg.setText(str);
    }
}

输出: