实现 Android Activity 之间不跳转传值的方法

1. 步骤概述

下面是整个过程的步骤概述:

步骤 操作
1 创建需要传递数据的 Activity
2 创建一个数据传递工具类 DataHolder
3 在发送数据的 Activity 中将数据存入 DataHolder
4 在接收数据的 Activity 中从 DataHolder 中取出数据

接下来,我们将详细介绍每一步需要做什么,以及相应的代码。

2. 创建需要传递数据的 Activity

首先,我们需要创建两个 Activity,分别是发送数据的 SendActivity 和接收数据的 ReceiveActivity。这两个 Activity 可以是你项目中已经存在的任何两个 Activity,或者你也可以新建两个 Activity

3. 创建数据传递工具类 DataHolder

在项目中创建一个名为 DataHolder 的类,用于存放需要传递的数据。这个类可以是一个普通的 Java 类,不需要继承自任何 Android 类。

public class DataHolder {
    private static DataHolder instance;

    private String data;

    private DataHolder() {}

    public static DataHolder getInstance() {
        if (instance == null) {
            instance = new DataHolder();
        }
        return instance;
    }

    public String getData() {
        return data;
    }

    public void setData(String data) {
        this.data = data;
    }
}

上面的代码中,我们使用了单例模式来确保 DataHolder 类的唯一实例。我们通过 getInstance() 方法获取 DataHolder 的实例,并使用 getData()setData() 方法来获取和设置数据。

4. 在发送数据的 Activity 中将数据存入 DataHolder

在发送数据的 SendActivity 中,我们需要将需要传递的数据存入 DataHolder

public class SendActivity extends AppCompatActivity {

    private EditText etData;
    private Button btnSend;

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

        etData = findViewById(R.id.et_data);
        btnSend = findViewById(R.id.btn_send);

        btnSend.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String data = etData.getText().toString();
                DataHolder.getInstance().setData(data);
                finish(); // 关闭当前 Activity
            }
        });
    }
}

上述代码中,我们通过 findViewById() 方法获取到发送按钮和数据输入框的实例,并设置了按钮的点击事件。当点击发送按钮时,我们获取输入框中的数据,并使用 DataHolder.getInstance().setData(data) 方法将数据存入 DataHolder 中。最后,我们使用 finish() 方法关闭当前 Activity,返回到上一个 Activity

5. 在接收数据的 Activity 中从 DataHolder 中取出数据

在接收数据的 ReceiveActivity 中,我们可以从 DataHolder 中取出之前存入的数据。

public class ReceiveActivity extends AppCompatActivity {

    private TextView tvData;

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

        tvData = findViewById(R.id.tv_data);

        String data = DataHolder.getInstance().getData();
        tvData.setText(data);
    }
}

上述代码中,我们通过 findViewById() 方法获取到显示数据的文本框的实例,并使用 DataHolder.getInstance().getData() 方法获取之前存入的数据。最后,我们将数据设置到文本框中显示出来。

6. 完成

至此,我们已经完成了 Android Activity 之间不跳转传值的方法。通过使用 DataHolder 类,我们在发送数据的 Activity 中将数据存入 DataHolder,然后在接收数据的 Activity 中从 DataHolder 中取出数据,实现了数据的传递。

希望本文能够帮助到你,如果还有其他问题,欢迎提问。