当前位置: 首页 > 知识库问答 >
问题:

从适配器点击切换到片段[duplicate]

钱渊
2023-03-14

我在项目中有一个后盾,为了从一个片段过渡到另一个片段,我使用以下方法

 public void showFragment(@NonNull Fragment fragment) {
        showFragment(fragment, true);
    }

    public void showFragment(@NonNull Fragment fragment, boolean addToBackStack) {
        if (curFragment != null && addToBackStack) {
            pushFragmentToBackStack(curTabId, curFragment);
        }
        replaceFragment(fragment);
    }
 private void replaceFragment(@NonNull Fragment fragment) {
        FragmentManager fm = getSupportFragmentManager();
        FragmentTransaction tr = fm.beginTransaction();
        tr.replace(R.id.content, fragment);
        tr.commitAllowingStateLoss();
        curFragment = fragment;
    }

但我需要通过单击recyclerView中的项目进入片段,为此,我为每个项目添加了一个位置。而Adapter中的onBindViewHolder添加了这个

 @Override
    public void onBindViewHolder(MenuViewHolder holder, int position) {
        ItemMenu Item = ItemMenuList.get(position);

        holder.tv_menu.setText(Item.getMenuText());

        holder.getAdapterPosition();

        holder.cv_menu.setOnClickListener(v ->
        {
            switch (Item.getInitialPositon()) {
                case 0: {
                    ((MainActivity) requireActivity()).showFragment(Fragment_Tasks.newInstance());
                    break;
                }
                case 1: {

                    break;
                }
            }
        });
    }

问题是转换需要上下文()。如何修复?


共有2个答案

楚博雅
2023-03-14

您可以从您的视图持有者获取上下文

holder.itemView.getContext()

但这并不值得推荐

最佳实践是为onclick-in适配器添加接口,然后将其实现到片段中

夏季萌
2023-03-14

您可以将Context引用传递到适配器或回调,您可以使用该回调将单击处理的作业传递给活动/片段。

例如,我们可以定义一个回调接口:

interface OnItemClickListener {
     void onItemClick(...);
}

通过构造函数将其传递到适配器,然后在单击项时触发它。所以在onBindViewHolder中:

holder.cvMenu.setOnClickListener(v -> {
    itemClickListener.onItemClick(...);
});
 类似资料:
  • 问题内容: 这个想法是我有一个列表视图,其中每个项目都是一个产品,当我单击该项目时,我需要从列表视图的适配器内部的单击中转到另一个片段。 我的适配器是: 您必须假设所有代码都在工作。 如何转到适配器内的产品Fragment? 问题答案: 为了解决这个问题,我要做的是: 在主类中,我将参数作为值,并通过开关在我感兴趣的main中设置了片段。

  • 在适配器中 Holder.NameExam2.SetOnClickListener(新建View.OnClickListener(){ 成碎片 @覆盖公共视图onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState){ 它在getString()中调用空指针异常。如何解决。

  • 但问题是我想知道如何从类中的片段调用方法?这是我的代码 下面是在活动中工作但在片段中不工作的代码

  • 我正在使用量角器在我的角度应用程序上运行E2E。我遇到了一个非常奇怪的问题。我正在使用Bootstrap Dropdown,它有一些选项。我需要单击其中一个选项。我参考了这个答案,它试图做类似的事情,但对我不起作用:量角器——如何选择大量嵌套的下拉元素? 我的结构看起来像: 在我的测试中,我尝试单击重命名链接。 我写的代码是: 在运行测试时,下拉切换按钮上有一个小的闪烁,似乎按钮被点击了。但是,应

  • 我有一个回收器适配器,我在其中为适配器中的项添加了。代码如下: 这里是片段代码,它处理从适配器到片段的值获取。 我正在尝试将和具有该的值从适配器传递到片段。但我的代码不行。我该怎么修好它?