2017-02-19 36 views
0

我正在使用FirebaseUI RecyclerView,我想在單擊列表項時創建對話框片段。要創建一個新的片段,我必須從靜態類調用getFragmentManager()。該錯誤由IDE給出。我無法將參數傳遞給靜態Viewholder類,因爲它是由Firebase回收站適配器直接實例化的。從靜態視圖持有者類調用getFragmentManager()方法FirebaseUI

這裏是適配器的代碼片段:

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。然後,您可以檢查該上下文是否爲instanceofFragmentActivity。如果是,則可以將Context投射到FragmentActivity,並調用其上的方法來操縱其片段。

+0

非常感謝你的邏輯。 – NightOwl

+0

這太瘋狂了,謝謝!如果它幫助其他人:我使用它,因爲我有一系列片段的活動,在每個片段上收集用戶的答案。其中一個片段具有Firebase RecyclerView,用戶可從列表中進行選擇。從我的FirebaseRecyclerAdapter中,我想在調用Activity中調用一個方法,在選擇一個項目後移動到下一個Fragment。這個解決方案非常優雅,效果很棒! – Lucy

相關問題