android - 如何从另一个 fragment 获取适配器

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

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

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

Slide

我将 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 。 它看起来像这样:

  1. 创建界面

    public interface MyActivityCallback {
        void doSomeWithFragment();
    }
    
  2. 让您的 Activity 覆盖此接口(interface)

    public MyActivity extends AppCompatActivity implements MyActivityCallback {
        ...
        MyFragment fragment1;
        MyFragment fragment2;
        ...
        void doSomeWithFragment() {
           ...
           fragment1.doSome();
        }
    }
    
  3. 在您的 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/

相关文章:

android - 为什么 Log.d() 消息不应该显示在设备上?

android - 设置 admob 后,我的应用程序崩溃而没有错误

android - FragmentStatePagerAdapter 项目不加载

android - TestNG结果的testng-results.xml中的 "duration in ms"代表什么?

Android Fragment 返回堆栈

java - 文字不显示(初学者)

android - 在提交 FragmentTransaction 之前检查状态是否已保存

android - 如何防止在 Android 中的 RecyclerView 上向左或向右滑动

java - 如何使 Recyclerview 与其父 View 一起滚动?

android - 如何在 firebase 中编写两个查询?