2016-05-09 30 views
2

を開くためにはどのように新しいフラグメントを開こうとしたが、エラーを取得しています: 断片OnClickListener

cannot resolve getFragmentManager

は、私はいくつかのソリューションを試みたが、まだエラーを取得しています。どうすれば解決できますか?

public class RecyclerViewDataAdapter extends RecyclerView.Adapter<RecyclerViewDataAdapter.ViewHolder> { 
private Context context; 
public ImageLoader mImageLoader; 

//List of superHeroes 
List<ListOfData> superHeroes; 

public RecyclerViewDataAdapter(List<ListOfData> superHeroes, Context context) { 
    super(); 
    //Getting all the superheroes 
    this.superHeroes = superHeroes; 
    this.context = context; 

} 

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

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    ListOfData superHero = superHeroes.get(position); 

    mImageLoader = MyApplication.getInstance().getImageLoader(); 
    mImageLoader.get(superHero.getImageUrl(), ImageLoader.getImageListener(holder.imageView1, R.mipmap.ic_launcher, android.R.drawable.ic_dialog_alert)); 
    holder.imageView1.setImageUrl(superHero.getImageUrl(), mImageLoader); 
    holder.textViewName1.setText(superHero.getName()); 
    //holder.textViewName2.setText(superHero.getName()); 
    //holder.textViewRank.setText(String.valueOf(superHero.getRank())); 
    //holder.textViewRealName.setText(superHero.getRealName()); 
    //holder.textViewCreatedBy.setText(superHero.getCreatedBy()); 
    //holder.textViewFirstAppearance.setText(superHero.getFirstAppearance()); 

    String powers = ""; 

    /* for(int i = 0; i<superHero.getPowers().size(); i++){ 
     powers+= superHero.getPowers().get(i); 
    }*/ 

    //holder.textViewPowers.setText(powers); 

    holder.imageView1.setOnClickListener(new View.OnClickListener() { 
     public Activity context; 
     @Override 
     public void onClick(View v) { 
      BehindTheLayoutFragment nextFrag= new BehindTheLayoutFragment(); 
      this.getFragmentManager().beginTransaction() 
        .replace(R.id.behind_the_layout_fragment, nextFrag) 
        .addToBackStack(null) 
        .commit(); 


     } 
    }); 

} 


@Override 
public int getItemCount() { 
    return superHeroes.size(); 
} 

class ViewHolder extends RecyclerView.ViewHolder { 
    public NetworkImageView imageView1; 
    public TextView textViewName1; 
    public TextView textViewName2; 
    public TextView textViewRank; 
    public TextView textViewRealName; 
    public TextView textViewCreatedBy; 
    public TextView textViewFirstAppearance; 
    public TextView textViewPowers; 

    public ViewHolder(View itemView) { 
     super(itemView); 
     imageView1 = (NetworkImageView) itemView.findViewById(R.id.thumbnail); 
     textViewName1 = (TextView) itemView.findViewById(R.id.category_title_one); 
     /* textViewRank= (TextView) itemView.findViewById(R.id.textViewRank); 
     textViewRealName= (TextView) itemView.findViewById(R.id.textViewRealName); 
     textViewCreatedBy= (TextView) itemView.findViewById(R.id.textViewCreatedBy); 
     textViewFirstAppearance= (TextView) itemView.findViewById(R.id.textViewFirstAppearance); 
     textViewPowers= (TextView) itemView.findViewById(R.id.textViewPowers); 
     */ 
    } 
} 
+0

これを解決しましたか?あなたは答えが必要ですか? @Override公共ボイドのonClick(ビューV){ mListener.onClick(); – varunkr

答えて

0

getFragmentManagerがないRecyclerViewDataAdapteractivityインスタンス上で呼び出すことがあります。

は、ここで私はOnClickListenerを設定し、私のアダプタのコードです。

このクラスを使用し、あなたの活動における内部クラスとしてか、フラグメントマネージャに注意する

0
public class RecyclerViewDataAdapter extends RecyclerView.Adapter<RecyclerViewDataAdapter.ViewHolder> 
{ 

recycleListener mListener; 
@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
holder.imageView1.setOnClickListener(new View.OnClickListener() { 
    public Activity context; 
    @Override 
    public void onClick(View v) { 
     mListener.onClick(); 

    } 
}); 


public interface recycleListener 
{ 
    void onClick(); 
} 


} 




    public class MyActivity extends AppCompatActivity implements RecyclerViewDataAdapter.recycleListener 
    { 

    public void onClick() 
    { 
BehindTheLayoutFragment nextFrag= new BehindTheLayoutFragment(); 
     this.getFragmentManager().beginTransaction() 
       .replace(R.id.behind_the_layout_fragment, nextFrag) 
       .addToBackStack(null) 
       .commit(); 

    } 

    } 
+0

が holder.imageView1.setOnClickListener(新しいView.OnClickListener(){ 公共活動コンテキストでヌルポイント例外をgettting ---- ----> NullPointerExceptionを表示します。 } }); –

+0

削除 "公共Activityコンテキスト;" onClickListenerからのラインと、まだfristly私はこの行「this.getFragmentManager()のbeginTransaction() .replace(R.id.behind_the_layout_fragment、nextFrag)でエラーになったmListener –

+0

をご確認ください。 .addToBackStack(null) .commit(); " 次に、getFragmentManagerをgetSupportFragmentManagerに変更しました。エラーはなくなりましたが、mListenerでエラーが発生しました。 –

0

物事を取得するRecyclerViewDataAdapterのコンストラクタで渡しリファレンスを使用しますか! getChildFragmentManagerがフラグメントコンテキスト

2)、これは親クラスを指す上で呼び出され、一方

1)getFragmentマネージャは、活動コンテキストに呼ばれます。あなたは

this.getFragmentManager().beginTransaction() 
       .replace(R.id.behind_the_layout_fragment, nextFrag) 
       .addToBackStack(null) 
       .commit(); 

なぜを行うことができないので、アダプタクラスの内部で、これはアダプタクラスを参照しますか?ポイント1で述べたように、getFragmentManagerはonactivityコンテキストと呼ばれます。しかし、あなたは既にあなたのアダプターにコンテキストを渡していますね。そう簡単に

context.getFragmentManager().beginTransaction() 
        .replace(R.id.behind_the_layout_fragment, nextFrag) 
        .addToBackStack(null) 
        .commit();