0

Ich versuche, RecyclerView in der DialogFragment, die in einem Fragment ist zu inflate. Ich habe RecyclerView Adapter normalerweise gemäß Richtlinien gemacht.RecyclerView in DialogFragment in Fragment

Aber ich erhalte diesen Fehler 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

Auf der Linie

recyclerView.setLayoutManager (Manager);

Hier ist der vollständige Code

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

Antwort

1

Offensichtlich gonna crash enthält, weil es nicht Recycler View-Instanz zu finden.

Ersetzen Sie einfach diese Zeile ::

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

Mit ::

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

Jetzt wird es für Sie arbeiten.

Danke und fröhliche Codierung.

Lassen Sie mich wissen, wenn mehr Hilfe brauchen !!

+0

Es funktionierte, aber schließlich ist App noch da jetzt Adapter abstürzt für Absturz des Adapters – GeekWithGlasses

+0

Beitrag logcat Absturz: Der Versuch, virtuelle Methode ‚Leeren android.widget.Button.setOnClickListener aufzurufen (android.view.View $ OnClickListener) 'für einen Null-Objektverweis at com.liventoday.launch4.liventoday.GoalListAdapter $ RecyclerViewHolder. (GoalListAdapter.java:63) –

+0

java.lang.NullPointerException – GeekWithGlasses

0

Ihr Problem ist mit dieser Zeile:

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

Sie wollen wirklich den RecyclerView aus der Sicht, dass Sie aufgeblasene in Ihrem Fragmente auf dieser Linie erhalten

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

Also um das zu beheben, chang e die erste Zeile des Codes I der

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

Dies wird unter der Annahme, dass die DialogFragment bookhistory

Verwandte Themen