【问题标题】:doesn't show getSupportFragmentManager on ViewHolder in RecyclerView在 RecyclerView 的 ViewHolder 上不显示 getSupportFragmentManager
【发布时间】:2015-11-19 03:28:21
【问题描述】:

ViewHolder,我无法拨打getSupportFragmentManager

我想在 Fragment 之间切换

我搜索了所有的谷歌页面。但我找不到。

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

    public ImageView imgThumbnail;//img
    public TextView tvspecies; //text

    public ViewHolder(View itemView) {
        super(itemView);

        imgThumbnail = (ImageView)itemView.findViewById(R.id.img_thumbnail);
        tvspecies = (TextView)itemView.findViewById(R.id.tv_species);

        itemView.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {/*버튼 실행했을때 실행부분*/

        Fragment fm=new NewsFragment();
        FragmentTransaction transaction=fm.getFragmentManager().beginTransaction();
        transaction.replace(R.id.Linearcontainer, fm);
        transaction.addToBackStack(null);
        transaction.commit();

    }//onClick


}//ViewHolder

【问题讨论】:

  • 你找到答案了吗?

标签: android android-fragments android-recyclerview fragment


【解决方案1】:

试试这个

public HorizontalProductAdapter(Activity context, List<RecycleIndividualProduct>data, FragmentManager fragmentManager){
        inflater = LayoutInflater.from(context);
        this.subActivityData = data;
        this.fragmentManager=fragmentManager;
}

并从您的活动或片段中调用您的适配器

 mAdapter = new HorizontalProductAdapter(getActivity(),allDeals,getFragmentManager());

【讨论】:

    【解决方案2】:

    只要这样做, 从实例化适配器的活动或片段中传递 getSupportFragmentManager,并在适配器类构造函数中执行此操作。

     public ViewHolder(View itemView, FragmentManager fragmentManager) {
            super(itemView);
    
            imgThumbnail = (ImageView)itemView.findViewById(R.id.img_thumbnail);
            tvspecies = (TextView)itemView.findViewById(R.id.tv_species);
            this.fragmentManager = fragmentManager
            itemView.setOnClickListener(this);
    
        }
    

    【讨论】:

      【解决方案3】:

      在我的 recyclerview 适配器类中,我这样做了:

      //recyclerView adapter global variable
      private List<Data_Class> dataModel;
      private Context mContext;
      private FragmentManager FragManager;
      
      //Recyclerview adapter constructor
      public Recycler_Adapter_Class(Context appContext, List <Data_Class> data, FragmentManager fmanager) {
          this.mContext = appContext;
          this.dataModel = data;
          this.FragManager = fmanager;
      }
      
      //In the activity or Fragment that calls the recyclerview adapter I did this:
      
      Recycler_Adapter_Class RC = new Recycler_Adapter_Class(this, Data_Class_List, this.getSupportFragmentManager());
      
      RecyclerView rView = (RecyclerView) findViewById(R.id.recycler_view);
      
      rView.setAdapter(RC);
      

      希望这对某人有所帮助。干杯!

      【讨论】:

        【解决方案4】:

        <p>Pass FragmentTransaction by constructing and then replace.</p>  
        <code>public SettingsAdapter(Context context, List<Settings> settingsList, android.support.v4.app.FragmentTransaction ft){
        this.context = context;
                this.settingsList = settingsList;
                this.ft = ft;
         }</code>
        
        // Calling the SettingsAdapter with constructors
        
            FragmentTransaction fragmentTransaction = getFragmentManager().beginTransaction();
                settingsAdapter = new SettingsAdapter(getActivity(), settingsList, fragmentTransaction);`enter code here`

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-07-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2021-10-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多