java - 从不同 fragment 获取对象的更改

标签 java android android-fragments android-intent interface

假设我们有两个 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/

相关文章:

android - 在 android 中替换 fragment 时 addToBackstack 不起作用

android - getChildFragmentManager() 方法未定义

java - 在 AJAX 和 excel 中显示汉字

java - Webdriver - 无法找到 Xpath/CSS 并出现 NoSuchElementException

java - 为什么我的 chrome 没有发送我设置的 cookie

android - 完全离线配置gradle

java - 使用 Java 中的 Selenium Webdriver 以不同用户身份运行 IE

android - 在 CursorTreeAdapter 类的 getChildrenCursor() 方法中异步查询数据库的模式

java - Android:isDirectory() 始终返回 true

android - 设备旋转后子 fragment 中的过时 Activity 引用