gpt4 book ai didi

java - 如何将数据从 Activity 传递到抽屉导航 Android 内的 fragment

转载 作者:行者123 更新时间:2023-12-02 00:56:40 25 4
gpt4 key购买 nike

具有 3 个 Fragments 的抽屉导航,第三个 Fragment 有一个带有 on Click 监听器的 TextView。单击后,布局 Activity 将在顶部打开,其中包括一个 ListView 以允许用户选择/单击特定项目,因此稍后此选定项目信息应显示在第三个 fragment 内的 TextView 上。

是否有任何方法来传递数据,因为我使用了一个类来传递数据,但 TextView 不会用发送的数据刷新

这是一种在 Activity 和第三个 fragment 之间共享参数的设计模式

--------------------------DataHolder类-------------------- --------------

 public class DataHolder {

private static DataHolder dataHolder = null;

private DataHolder() {
}

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


return dataHolder;
}


private String item;

public String getItem() {
return item;
}

public void setItem(String item) {
this.item = item;
}

}

最佳答案

如果您发现在您的情况下使用 startActivityForResult 不够,或者使用 EventBus,您可以通过使用 SharedPreferencesFragment 来解决这个问题/Activity 生命周期。

因此,一旦您开始新的 Activity,第一个 Activity 将进入 onPause ,并且其所有 Fragments 将进入被放入onPause。当用户单击第二个 Activity 中的 ListView 项目之一时,您可以将值存储在 SharedPreferences 中,如下所示:

PreferenceManager.getDefaultSharedPreferences(SecondActivity.this)
.edit().putString(key, selectedItemInfoHere).apply();

然后在您的第一个 Activity 和第三个 Fragment 方法 onResume()override,然后在里面进行 make检查:

 @Override
public void onResume() {
super.onResume();
String value = PreferenceManager.getDefaultSharedPreferences(getContext())
.getString(key, "");
if (value != null && !value.isEmpty()) {
//You have selected item value update TextView
}
}

请注意,一旦不需要此值,您将需要将其删除,因为每次调用 onResume 时,它都会更新您的 TextView。要删除值只需调用:

PreferenceManager.getDefaultSharedPreferences(getContext()).edit().remove(key);

关于java - 如何将数据从 Activity 传递到抽屉导航 Android 内的 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57813172/

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