当子视图可用时,从父片段调用子片段方法?

时间:2017-03-11 11:50:11

标签: java android android-fragments android-nested-fragment

我搜索了解决方案并发现了很多案例(与我的情况无关或可能我不理解他们正确)。

我的情况是:
假设我有一个父 Fragment Parent;

我正在从父片段 onCreateView

创建两个子片段
ChildFragment1 child1 = new ChildFragment1();
ChildFragment2 child2 = new ChildFragment2();


 //My child fragment exactly looks like this
 public class ChildFragment1 extends Fragment {

    View rootView;
    public ChildFragment1() {
        // Required empty public constructor
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) { 
        // Inflate the layout for this fragment
        rootView = inflater.inflate(R.layout.child_layout, container, false);
        return rootView;
    }

    public void methodTobeCalled() {
        //here i would like to do some changes to child view (add some views)
    }
}

能通过小孩的参考访问儿童片段的方法

child1.methodTobeCalled();

但此时我无法访问我的孩子片段视图。

当我有权访问时,我想从 父级片段 调用我的 子片段 函数对孩子来说,有没有机会?

提前致谢:)

3 个答案:

答案 0 :(得分:0)

尝试将其附加到此方法

@Override
public void onAttachFragment(Fragment childFragment) {
    super.onAttachFragment(childFragment);
}

答案 1 :(得分:0)

要从child_fragment访问parent_fragment次观看,请使用以下代码:

rootView = inflater.inflate(R.layout.my_fragment, container, false);
myET = rootView.findViewById(R.id.et_my);

答案 2 :(得分:0)

您可以使用 getChildFragmentManager()进行存档。

这是代码 YourFragment yourFragmentinstance = (YourFragment) getChildFragmentManager().getFragments().get(**FRAGMENT_POSITION**); yourFragmentinstance.yourMethod();

FRAGMENT_POSITION 可能是0.1,具体取决于您的初始化。