Android Fragments 更换回收器适配器的碎片

cgh8pdjw  于 2023-02-13  发布在  Android
关注(0)|答案(3)|浏览(91)

我正在开发一个android应用程序,将列表视图改为回收视图。

    • 问题**

使用一个示例项目,我在适配器视图中处理对recylcer的点击。然而,从这个适配器中,我调用一个新的片段时非常有时间。

itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            //         android.app.FragmentManager fragmentManager = getFragmentManager();
            //        FragmentManager fragmentManager = ((Activity) context).getFragmentManager();

            //       FragmentManager manager = this.getSupportFragmentManager();
            //       FragmentManager manager= getContext().getFragmentManager();

            //       FragmentManager fragmentManager = newsAdapter().getActivity().getFragmentManager();
            //       getActivity().getFragmentManager();
            Log.i("RecyclerViewItemClic", String.valueOf(getLayoutPosition()));

            Log.i("RecyclerViewItemClic", personName.getText().toString());
            String idnum = String.valueOf(personName.getText());
            Log.i("RecyclerViewItemClic", idnum);
            Log.i("RecyclerViewItemClic", personAge.getText().toString());

            if (personName.getText().toString() .equals("1")) {
            /*
                fragmentManager.beginTransaction()
                        .replace(R.id.content_frame
                                ,new numNumbersFrag())
                        .commit();

            */
                ((FragmentActivity) context).getFragmentManager().beginTransaction()
                        .replace(R.id.content_frame, new numNumbersFrag())
                        .commit();

            }
        }

以上是我尝试导致错误的代码
尝试对空对象调用虚拟方法"android. app. FragmentManager android. support. v4. app. FragmentActivity. getFragmentManager()"
如果我尝试使用getSupportFragmentManager(),或者导入片段而不是版本4,也会收到相同的错误。
任何帮助都将不胜感激。
谢谢

pn9klfpd

pn9klfpd1#

变化

((FragmentActivity) context).getFragmentManager().beginTransaction()
                    .replace(R.id.content_frame, new numNumbersFrag())
                    .commit();

((FragmentActivity) view.getContext()).getFragmentManager().beginTransaction()
                    .replace(R.id.content_frame, new numNumbersFrag())
                    .commit();

因为在

public void onClick(View view)

view.getContext()将返回不为空的上下文。
谢谢你,

mec1mxoz

mec1mxoz2#

这也可以帮助您:

@Override
public void onClick(View v) {
    View view = v.getRootView();
    Activity activity = (Activity) view.getContext();
    activity.getFragmentManager().beginTransaction().replace(R.id.FrameLayout, fragment).commit();
}
vsdwdz23

vsdwdz233#

在Adapter类上尝试此操作。

((FragmentActivity)view.getContext()).getSupportFragmentManager()
                        .beginTransaction()
                        .replace(R.id.frame_container, new YourFragment()).addToBackStack(null)
                        .commit();

相关问题