0

アダプターでgetFragmentManager()を使用する方法。どのようにアダプタでこのコードを使用しますか? (私はSecondFragmentでこのコードを使用しています)。 アダプターでgetFragmentManager()を使用する方法

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


とアダプタでは、この方法では動作しません:

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

とショーのエラー私に:私のアダプタで

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


は(私がgetFragmentManager()を使用する必要があります私のアダプタ。):

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; 
    } 
} 

私のアダプターにはgetFragmentManager()が必要です。

答えて

0

FragmentManagerを、ArrayAdapterコンストラクタの入力引数に追加します。あなたの活動またはSubActivity

public class MyArrayAdapter extends ArrayAdapter { 
     List arr; 
     int resource; 
     Context context; 
     FragmentManager fragmentManager; 
     public MyArrayAdapter (Context context, int resource, List arr , FragmentManager fragmentManager) { 
      super(context, resource, arr); 
      this.arr=arr; 
      this.resource=resource; 
      this.context=context; 
      this.fragmentManager = fragmentManager; 
     } 
...... 
} 

もこのようFragmentManagerを得る:

this.getFragmentManager(); 

または

getActivity().getFragmentManager(); 

幸運!

+0

私は使用時 'Fragment.getFragmentManagerは()'私にエラーを表示し、doesnのいない:

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

てみ、これは使用してFramgnetを変更するには'FragmentManager.getFragmentManager()'を使うとエラーが出て動作しません。 –

+0

これはなに? Fragment.getFragmentManager()私が編集した慎重 –

+0

を使用しています。アダプタで 'getFragmentManager()'を使う必要があります。私はあなたを助けることができないアダプタ 'getActivity()'は利用できません –

2

変更は、これまであなたのインポート:

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

)'利用できません –

+0

アダプタで私の編集 –

+0

を参照してください@ArmanDownload: 'this.context.'、' getSupportFragmentManager() 'は利用できません後。 –

関連する問題