gpt4 book ai didi

android - 在 fragment 及其容器 Activity 之间传递数据

转载 作者:IT老高 更新时间:2023-10-28 12:55:10 31 4
gpt4 key购买 nike

如何在 fragment 及其容器 Activity 之间传递数据?有没有类似于通过 Intent 在 Activity 之间传递数据的东西?

我读了这个,但没有多大帮助:
http://developer.android.com/guide/topics/fundamentals/fragments.html#CommunicatingWithActivity

最佳答案

尝试使用接口(interface)。

任何应该将数据传递回其包含 Activity 的 fragment 都应该声明一个接口(interface)来处理和传递数据。然后确保您的包含 Activity 实现了这些接口(interface)。例如:

JAVA

在您的 fragment 中,声明接口(interface)...

public interface OnDataPass {
public void onDataPass(String data);
}

然后,将接口(interface)的包含类的实现连接到 onAttach 方法中的 fragment ,如下所示:

OnDataPass dataPasser;

@Override
public void onAttach(Context context) {
super.onAttach(context);
dataPasser = (OnDataPass) context;
}

在您的 fragment 中,当您需要处理数据的传递时,只需在 dataPasser 对象上调用它:

public void passData(String data) {
dataPasser.onDataPass(data);
}

最后,在你的包含 Activity 实现 OnDataPass...

@Override
public void onDataPass(String data) {
Log.d("LOG","hello " + data);
}

Kotlin

步骤 1. 创建接口(interface)

interface OnDataPass {
fun onDataPass(data: String)
}

步骤 2. 然后,将接口(interface)的包含类的实现连接到 onAttach 方法(YourFragment)中的 fragment ,如下所示:

lateinit var dataPasser: OnDataPass

override fun onAttach(context: Context) {
super.onAttach(context)
dataPasser = context as OnDataPass
}

第 3 步。在您的 fragment 中,当您需要处理数据的传递时,只需在 dataPasser 对象上调用它:

fun passData(data: String){
dataPasser.onDataPass(data)
}

第 4 步。最后,在您的 Activity 中实现 OnDataPass

class MyActivity : AppCompatActivity(), OnDataPass {}

override fun onDataPass(data: String) {
Log.d("LOG","hello " + data)
}

关于android - 在 fragment 及其容器 Activity 之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9343241/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com