【问题标题】:Passing Parcelable objects from fragment to another fragment将 Parcelable 对象从片段传递到另一个片段
【发布时间】:2016-11-18 21:22:54
【问题描述】:

我有两个片段,一个在 onCreateView 中创建,另一个在 onViewCreated 中创建

onCreateView 中的片段 A 有 3个编辑文本字段

onViewCreated 中的片段 B 有一个带有列表项的回收视图 (每个项目都有名字,姓氏) 单击该项目时,我将传递一个可打包对象片段 A,该片段 A 具有编辑文本字段并希望在编辑文本字段中显示这些数据

我如何做到这一点?

【问题讨论】:

    标签: java android android-fragments


    【解决方案1】:
    Fragment fragmentGet1 = new FragmentGet1();
    Fragment fragmentGet2 = new FragmentGet2();
    Fragment fragmentGet2 = new FragmentGet3();
    
    fragmentGet1.setArguments(bundle);
    fragmentGet2.setArguments(bundle);
    fragmentGet3.setArguments(bundle);
    

    您可以创建所有 3 个片段的实例,但只能使用 FragmentGet1 的实例。其他的不使用。稍后,当您创建任何这些 Fragment 的另一个实例时,它不会有 args,因为它是一个完全独立的对象。

    您需要在每次创建新片段时将包向前传递。如果你想从已经创建的片段中创建它,它看起来有点像这样:

    public void showNextFragment() {
    
        FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
    
        Fragment fragmentGet2 = new FragmentGet2();
    
        if(this.getArguments() != null)
            fragmentGet2.setArguments(this.getArguments());
    
        fragmentTransaction.replace(R.id.frame_container, fragmentGet2);
        fragmentTransaction.addToBackStack(null);
        fragmentTransaction.commit();
    
    }
    

    示例

    要将 Student 对象传递给 Activity,只需执行以下操作:

    Student s = //get it here
    Bundle b = new Bundle();
    b.putParcelable("student", s);
    
    Intent i = new Intent(getActivity(), ThatOtherActivity.class);
    i.putExtra("extraWithStudent", b);
    startActivity(i);
    

    然后读取Activity中的数据:

    Intent incomingIntent = getIntent();
    Bundle b = incomingIntent.getBundleExtra("extraWithStudent");
    Student s = (Student) b.getParcelable("student");
    

    【讨论】:

    • 感谢您的回复,我只有 2 个片段,并且想将 bundle 从自定义适配器传递到在 onCreateView 中创建的片段
    • 无论你使用多少 Fragment 都没关系。您唯一需要做的就是在 Fragment Transstation 上设置参数 () 和 getArguments()。
    • 我尝试了你的建议,它有效我可以在调试器中看到我的捆绑数据,无论我点击哪个项目,但我无法将数据设置到它显示为空白的编辑文本中只有
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-05-31
    • 1970-01-01
    • 2016-06-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多