我有一个幻灯片面板,里面有一个片段,每个部分有一个片段(您将在屏幕截图中看到)。
我有第一部分(片段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的适配器中的项。
如何使用此适配器,如果我对所有适配器使用相同的适配器,如何区分。
答案 0 :(得分:3)
您可以通过活动回调访问其他片段。 它看起来像这样:
创建界面
public interface MyActivityCallback {
void doSomeWithFragment();
}
让您的活动覆盖此界面
public MyActivity extends AppCompatActivity implements MyActivityCallback {
...
MyFragment fragment1;
MyFragment fragment2;
...
void doSomeWithFragment() {
...
fragment1.doSome();
}
}
在您的片段中找到此接口。最好在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();
}
}
所以,用几句话来说:
活动存储对所有子片段的引用
片段存储对由父活动实现的接口回调的引用。
因此,您调用活动通过此回调执行一些操作,而活动正在执行该工作,因为它具有所有片段的引用。