【问题标题】:Replace fragment from recycler adapter从回收器适配器替换片段
【发布时间】:2016-11-14 21:08:01
【问题描述】:

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

问题

使用示例项目,我在适配器视图中处理对回收站的点击。 但是,通过这个适配器,我非常有时间调用一个新片段。

    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,我也会得到同样的错误。

任何帮助将不胜感激。

谢谢

【问题讨论】:

    标签: android android-fragments


    【解决方案1】:

    改变

    ((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() 将返回不为空的上下文。

    谢谢,

    【讨论】:

    • 这个 R.id.content 框架在哪里
    • 在问题中。
    【解决方案2】:

    这也可能对你有帮助:

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

    【讨论】:

      【解决方案3】:

      在您的适配器类上试试这个。

      ((FragmentActivity)context).getSupportFragmentManager()
                              .beginTransaction()
                              .replace(R.id.frame_container, new YourFragment().addToBackStack("crop_type")
                              .commit();
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-19
        • 1970-01-01
        • 2018-09-09
        • 1970-01-01
        • 2017-04-28
        • 2017-01-31
        相关资源
        最近更新 更多