【问题标题】:How to get adapter from another fragment如何从另一个片段中获取适配器
【发布时间】:2018-10-07 20:06:19
【问题描述】:

我有一个滑动面板,里面有一个片段,每个部分还有一个片段(您将在屏幕截图中看到)。

我有存储在另一个适配器中选择的项目的第一部分(片段 0)。如何引用这些片段和适配器,以便能够修改适配器上的项目。

我已将片段存储在:

private void setUpOperateOptionSectionItemFragment(OperateModel model, int fragmentPosition){
        LinearLayout container = getSectionContainer();
        activityView.getLaySectionsContainer().addView(container);
        OperateOptionSectionItemFragment fragment = OperateOptionSectionItemFragment.newInstance(model, fragmentPosition, this);
        FragmentManager fragmentManager = activityView.getActivity().getFragmentManager();
        FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
        fragmentTransaction.add(container.getId(), fragment, OPERATE_OPTION_FRAGMENT_TAG+fragmentPosition);
        fragmentTransaction.commit();
        operateOptionSectionItemFragmentList.add(fragment);
    }

当我单击片段 1、2、3 的适配器项时...我需要在片段 0 的适配器中添加或删除(如果存在)该项。

如何访问此适配器,如果我对所有人使用相同的适配器,如何区分。

【问题讨论】:

    标签: android android-fragments android-recyclerview android-adapter


    【解决方案1】:

    您可以通过活动回调访问其他片段。 它看起来像这样:

    1. 创建界面

      public interface MyActivityCallback {
          void doSomeWithFragment();
      }
      
    2. 让你的活动覆盖这个接口

      public MyActivity extends AppCompatActivity implements MyActivityCallback {
          ...
          MyFragment fragment1;
          MyFragment fragment2;
          ...
          void doSomeWithFragment() {
             ...
             fragment1.doSome();
          }
      }
      
    3. 在你的片段中找到这个接口。最好在 onAttach() 方法中这样做:

      public MyFragment extends Fragment {
          MyActivityCallback callback;
      
          @Override
          public void onAttach(Context context) {
              super.onAttach(context);
              callback = (MyActivityCallback) context; // context - is your activity, that added this fragment
          }
          ...
      
          public void someFunction() {
              // here you want to change some in your other fragments:
             callback.doSomeWithFragment();
          }
      }
      

    所以,简而言之:

    Activity 存储对所有子片段的引用
    片段存储对接口回调的引用,由父活动实现。
    所以,你通过这个回调调用activity来做一些事情,activity正在做这个工作,因为它有所有片段的引用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-11
      • 1970-01-01
      • 1970-01-01
      • 2022-11-10
      • 1970-01-01
      • 2022-01-20
      • 2021-06-21
      • 1970-01-01
      相关资源
      最近更新 更多