在RecyclerView中单击项目后的片段事务

时间:2017-05-09 08:41:52

标签: java android android-fragments android-recyclerview

这是我的问题。当我点击RecyclerView中的单个项目时,我想进行片段交易。在寻呼机适配器中,我创建了rootListFragment,它是其他Fragments的容器。创建rootListFragment后,它会包含我的RecyclerView片段,我将其命名为ListFragment。当我单击单个项目时,我想将rootListFragment替换为WebViewFragment,其中仅包含单个文本" Hello空白片段"。完成此交易后,我的ListFragment仍处于正面视图中。你知道如何解决这个问题吗?这是我的代码。

RootListFragment:

public class RootListFragment extends Fragment {

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        View view = inflater.inflate(R.layout.fragment_root_list, container, false);

        FragmentManager fragmentManager = getChildFragmentManager();
        FragmentTransaction transaction = fragmentManager.beginTransaction();
        transaction.replace(R.id.root_list_fragment, new ListFragment()).commit();

        return view;
    }

}

部分RecyclerView,点击

public static class DataViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

        ...

        public DataViewHolder(View view) {
            super(view);

            view.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {

            AppCompatActivity activity = (AppCompatActivity) v.getContext();
            activity.getSupportFragmentManager().beginTransaction().replace(R.id.root_list_fragment, new WebViewFragment())
                    .commit();
        }
    }
}

项目点击后的应用屏幕: screen

1 个答案:

答案 0 :(得分:0)

我认为问题在于您的onclick方法在您的适配器构造函数中获取您的上下文/活动值,如此

   public ViewAdapter(Context context, List<Information> data)
{
    inflater=LayoutInflater.from(context);
    this.data=data;
    this.context=context;

}

然后在你的onclick方法下面放置代码

context.getSupportFragmentManager().beginTransaction().replace(R.id.root_list_fragment, new WebViewFragment())
                .commit();