2017-02-19 6 views
0

FirebaseUI RecyclerViewで作業しています。リストアイテムをクリックしたときにダイアログフラグメントを作成します。新しいフラグメントを作成するには、getFragmentManager()を静的クラスから呼び出す必要があります。エラーはIDEによって与えられます。ファイヤーベースのリサイクラーアダプターによって直接インスタンス化されるため、静的なビューホルダークラスにパラメーターを渡すことはできません。FirebaseUIの静的ビューホルダークラスからgetFragmentManager()メソッドを呼び出す

mAdapter = new FirebaseRecyclerAdapter<Course, CourseViewHolder>(
      Course.class, 
      R.layout.list_item_course, 
      CourseViewHolder.class, 
      mDatabaseReference 
    ) { 

静的クラスコードはここにある:

private static class CourseViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener { 
     TextView textView; 

    public CourseViewHolder(View itemView) { 
     super(itemView); 
     textView = (TextView) itemView.findViewById(R.id.list_item_course_title_text_view); 

    } 

    @Override 
    public void onClick(View v) { 
     FragmentManager manager = getFragmentManager(); 
     CourseOperationFragment CourseOperationFragment = new CourseOperationFragment(); 
     CourseOperationFragment.show(manager, DIALOG_OPERATION); 
    } 
} 

答えて

2

あなたは、ビューにgetContext()を呼び出すことによって、ビューに関連付けられているContextを得ることができます。ここ

は、アダプタのコードスニペットです。次に、そのコンテキストが instanceof FragmentActivityかどうかを確認することができます。そうであれば、 ContextFragmentActivityにキャストし、そのフラグメントを操作するためにメソッドを呼び出すことができます。

+0

ありがとうございます。 – NightOwl

+0

これは役に立ちました、ありがとう!それが他の人を助ける場合:私はそれを使用しました。なぜなら、一連の断片を持つアクティビティがあり、各断片のユーザーからの回答を集めるからです。フラグメントの1つに、ユーザがリストから選択するFirebase RecyclerViewがあります。私のFirebaseRecyclerAdapterの中から、呼び出しアクティビティ内のメソッドを呼び出して、アイテムを選択した後で次のフラグメントに移動したいと考えています。このソリューションはエレガントで素晴らしいです! – Lucy

関連する問題