如何从子片段内部使用片段变量

时间:2013-12-18 07:02:25

标签: android android-layout android-fragments

我有AppleActivity,它启动了OrangeFragment,后者又启动了BookChildFragment。我在OrangeFragment里面有一个名为Object myObj的变量,我希望在BookFragment中继续使用它。 (BookFragment仅填充OrangeFragment布局内的子视图)。有谁知道这是怎么做到的吗?我正在使用支持库,当然还有getChildFragmentManager()

2 个答案:

答案 0 :(得分:1)

有几种可能性,但这里有一种:

您的Object myObj应该从Parcelable延伸(在API说明中,您会发现Parcelable的典型实施方式。)

现在,您可以将带有myObj的{​​{1}}从OrangeFragment转移到BookFragment,如下所示:

Bundle

答案 1 :(得分:0)

当您不需要从BookFragment更改myObj时,

owe's answer就会很好。如果您希望myObj可以修改,那么您可以使用以下简单的解决方案:

class BookFragment extends Fragment {
    ...

    private void someMethod() {
        OrangeFragment myFragment =
            (OrangeFragment)getActivity().getFragmentManager().findFragmentById(R.id.orangeFragmentId);

        myFragment.setMyObj(null);
    }
}

class OrangeFragment extends Fragment {
    ...

    public Object getMyObj() {
        return myObj;
    }
    public void setMyObj(Object o) {
        myObj = o;
    }
}

但如果你想要更灵活的解决方案,我建议使用LocalBroadcastManager