假设我们有两个 fragment A 和 B,我们使用 Bundle 将对象 O1 从 fragment A 发送到 B,并将 fragment B 引入当前 Activity 。对 O1 进行一些更改,即将数据存储在有效负载对象 O1 中,现在我们返回到保存按钮所在的 fragment A。现在,如果我们保存 O1 拥有的数据,即 O1.savetoDatabase() 我们不会得到我们在 fragment B 中所做的数据更改。是否有可能的方法来获取 fragment A 中传递给 fragment B 的对象的更改? (类似于造成更改的引用)
编辑:使用 setTargetFragment 的答案二似乎有效,但唯一的问题是当我在 fragment B 上然后将数据发送到 fragment A 时,我正在 fragment A 的对象 O1 中接收数据(这工作正常)但是当我按从 fragment B 到 fragment A 的后退按钮时,O1 中的数据由于 fragment 重新创建而丢失。应该怎样做才能持久化发送的数据?
最佳答案
您可以使用 setTargetFragment()。为您的对象创建 getter 和 setter。
public class FragmentA extends Fragment {
private String mName;
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
FragmentB fragmentB = new FragmentB();
fragmentB.setTargetFragment(this, 1111);
}
public String getmName() {
return mName;
}
public void setmName(String mName) {
this.mName = mName;
}
}
public class FragmentB extends Fragment {
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
((FragmentA)getTargetFragment()).setmName("xyz");
}
}
或者您可以使用 onActivityResult 方法通过 Intent 将数据从fragmentB发送到FragmentA,如下所示。
getTargetFragment().onActivityResult(getTargetRequestCode(), resultCode, intent)
关于java - 从不同 fragment 获取对象的更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51034839/