簡體   English   中英

片段內DialogFragment內的RecyclerView

[英]RecyclerView inside DialogFragment inside Fragment

我正在嘗試在Fragment里面的DialogFragment里面充氣RecyclerView。 我通常按​​照指南制作了RecyclerView適配器。

但是我收到此錯誤java.lang.NullPointerException: Attempt to invoke virtual method 'voidandroid.support.v7.widget.RecyclerView.setLayoutManager(android.support.v7.widget.RecyclerView$LayoutManager)' on a null object reference

在線上

recyclerView.setLayoutManager(經理);

這是完整的代碼

public class AlertFragment extends DialogFragment {
RecyclerView recyclerView;
RecyclerView.Adapter adapter2;
RecyclerView.LayoutManager manager;

ArrayList<String> goalname = new ArrayList<String>();
 ArrayList<String> goalcategory = new ArrayList<String>();

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
    View v = inflater.inflate(R.layout.fragment_alert, container, false);
    goalname.add("Running");
    goalcategory.add("Physical");
    goalname.add("Yoga");
    goalcategory.add("Physical");
    goalname.add("Gym");
    goalcategory.add("Physical");
    goalname.add("Meditation");
    goalcategory.add("Mental");
    goalname.add("Puzzle Solving");
    goalcategory.add("Habits");
    manager = new LinearLayoutManager(getActivity());
    recyclerView = (RecyclerView) getActivity().findViewById(R.id.bookhistory);
    recyclerView.setLayoutManager(manager);


    adapter2 = new GoalListAdapter(goalname, goalcategory,getActivity());
    recyclerView.setAdapter(adapter2);
    adapter2.notifyDataSetChanged();
    return v;
}}

顯然它將崩潰,因為它沒有找到回收站視圖實例。

只需替換此行:

  recyclerView = (RecyclerView) getActivity().findViewById(R.id.bookhistory); 

附:

 recyclerView = (RecyclerView) v.findViewById(R.id.bookhistory); 

現在它將為您工作。

您的問題是與此行:

    recyclerView = (RecyclerView) getActivity().findViewById(R.id.bookhistory);

您確實想從您在此行的片段中放大的視圖中獲取RecyclerView

    View v = inflater.inflate(R.layout.fragment_alert, container, false);

因此,要解決此問題,請更改我提到的第一行代碼

    recyclerView = (RecyclerView) v.findViewById(R.id.bookhistory);

這是假定DialogFragment包含書籍歷史記錄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM