【问题标题】:Call child Fragment method from parent fragment when child view is available?当子视图可用时从父片段调用子片段方法?
【发布时间】:2017-03-11 11:50:11
【问题描述】:

我已经寻找解决方案并找到了很多案例(与我的情况无关或可能是我没有正确理解它们)。

我的情况是:
假设我有一个父母 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)
    }
}

我可以通过引用child like来访问子fragment的方法

child1.methodTobeCalled();

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

我想调用我的 子片段 函数 父片段 当我有权访问时到child view,有没有机会?

提前致谢:)

【问题讨论】:

  • 我不明白你所说的“我可以通过引用子类来访问子片段的方法”但你无法访问视图。
  • 我已经更新了我的问题,子片段看起来就像那样,我将我的 rootview 设置为 null @jiteshmohite
  • 你在哪里初始化你的视图?

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


【解决方案1】:

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

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

FRAGMENT_POSITION 可能为 0,1,具体取决于您的初始化。

【讨论】:

    【解决方案2】:

    尝试将其附加到此方法中

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

    【讨论】:

    • 我没明白你的意思
    【解决方案3】:

    要从parent_fragment 访问child_fragment 视图,请使用以下代码:

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

    【讨论】:

      猜你喜欢
      • 2018-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-17
      • 1970-01-01
      • 2016-08-25
      • 1970-01-01
      相关资源
      最近更新 更多