androidfragmentadapterfragmentmanager

How use getFragmentManager() in adapter


How use getFragmentManager() in adapter. how use this code in adapter ? (I use this code in my SecondFragment).

Fragment frg = null;
frg = getFragmentManager().findFragmentByTag("OneFragment");
final FragmentTransaction ft = getFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();


And this way in adapter doesn't work :

Fragment frg = null;
frg = ((Activity) context).getFragmentManager().findFragmentByTag("OneFragment");
final FragmentTransaction ft = ((Activity) context).getFragmentManager().beginTransaction();
ft.detach(frg);
ft.attach(frg);
ft.commit();

and show error to me :

Required:
android.support.v4.app.Fragment
Found:
android.app.FragmentManage


in my Adapter (i need use getFragmentManager() in my adapter.) :

import android.content.Context;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentTransaction;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.TextView;

import me.bazaarche.Fragment.FilterFragment;
import me.bazaarche.Fragment.HomeFragment;
import me.bazaarche.app.R;

public class CategorySub1Adapter extends RecyclerView.Adapter<CategorySub1Adapter.ViewHolder> {

    private Context context;
    private String[] categorySub1Name;
    int categoryPosition;
    int categorySub0Position;
    FragmentManager fragmentManager;

    public CategorySub1Adapter(Context context, FragmentManager fragmentManager, String[] categorySub1Name, int categoryPosition, int categorySub0Position) {
        this.context = context;
        this.categorySub1Name = categorySub1Name;
        this.categoryPosition = categoryPosition;
        this.categorySub0Position = categorySub0Position;
        this.fragmentManager = fragmentManager;
    }

    class ViewHolder extends RecyclerView.ViewHolder {
        View categorySub1Menu;
        TextView categorySub1Name;

        ViewHolder(View itemView) {
            super(itemView);
            categorySub1Menu = itemView.findViewById(R.id.category_sub0_menu);
            categorySub1Name = itemView.findViewById(R.id.category_sub1_name);
        }
    }

    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.row_category_sub1, parent, false);
        return new ViewHolder(view);
    }

    @Override
    public void onBindViewHolder(final ViewHolder holder, final int position) {
        holder.categorySub1Name.setText(categorySub1Name[position]);
        Animation animation = AnimationUtils.loadAnimation(context, R.anim.open_menu);
        animation.setStartOffset(30 * position);
        holder.itemView.startAnimation(animation);

        HomeFragment.adAdapter.ClearList();
        HomeFragment.last_ad_id = 0;
        FilterFragment.categoryPosition = categoryPosition;
        FilterFragment.categorySub0Position = categorySub0Position;
        FilterFragment.categorySub1Position = position;
        HomeFragment.adAdapter.LoadMore();

        Fragment frg = null;
        frg = fragmentManager.getFragmentManager().findFragmentByTag("OneFragment");
        final FragmentTransaction ft = fragmentManager.getFragmentManager().beginTransaction();
        ft.detach(frg);
        ft.attach(frg);
        ft.commit();
    }

    @Override
    public int getItemCount() {
        return categorySub1Name.length;
    }
}

i need use getFragmentManager() in my adapter.


Solution

  • Change your import to this :

    import android.support.v4.app.FragmentManager;
    import android.support.v4.app.Fragment;
    

    Try to change the Framgnet using this :

    Fragment frg = null;
    frg = ((Activity) context).getSupportFragmentManager().findFragmentByTag("OneFragment");
    final FragmentTransaction ft = ((Activity) context).getSupportFragmentManager().beginTransaction();
    ft.detach(frg);
    ft.attach(frg);
    ft.commit();