我有一个滑动面板,里面有一个 fragment ,每个部分还有一个 fragment (您将在屏幕截图中看到)。
我有第一部分( fragment 0)存储在另一个适配器中选择的项目。我如何引用这些 fragment 和适配器,以便能够修改适配器上的项目。
我将 fragment 存储在:
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);
}
当我点击 fragment 1、2、3 的适配器项时...我需要添加或删除(如果存在) fragment 0 的适配器中的项。
我如何访问这个适配器,如果我对所有适配器使用相同的适配器,如何区分。
最佳答案
您可以通过 Activity 回调访问其他 fragment 。 它看起来像这样:
创建界面
public interface MyActivityCallback { void doSomeWithFragment(); }
让您的 Activity 覆盖此接口(interface)
public MyActivity extends AppCompatActivity implements MyActivityCallback { ... MyFragment fragment1; MyFragment fragment2; ... void doSomeWithFragment() { ... fragment1.doSome(); } }
在您的 fragment 中找到此接口(interface)。最好在
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 存储对所有子 fragment 的引用
fragment 存储对接口(interface)回调的引用,由父 Activity 实现。
因此,您通过此回调调用 Activity 来执行某些操作,而 Activity 正在执行该工作,因为它具有所有 fragment 的引用。
关于android - 如何从另一个 fragment 获取适配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52692414/