- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
具有 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
,您可以通过使用 SharedPreferences
和 Fragment 来解决这个问题/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/
我是一名优秀的程序员,十分优秀!