Ich habe in den letzten paar Stunden nach einer Antwort gesucht, aber die Zeit ist begrenzt und ich muss diese Funktion bekommen, damit ein anderes Mitglied meines Teams einen Projektmeilenstein vervollständigen kann. Ich implementiere einen Spinner in ein Fragment. Dieser Spinner wird dann mit Informationen aus einer Firebase-Datenbank gefüllt. Allerdings bekomme ich immer eine Nullzeiger-Ausnahme auf speakerPick.setAdapter (sAdapter); HierArray-Adapter zeigt Null, Setup scheint korrekt zu sein?
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_create__event, container, false);
saveEvent = (Button) view.findViewById(R.id.btn_Save_Event);
etTitle = (EditText) view.findViewById(R.id.edit_speakerName);
etLocation = (EditText) view.findViewById(R.id.edit_Location);
etWhen = (EditText) view.findViewById(R.id.edit_When);
etDate = (EditText) view.findViewById(R.id.edit_Date);
etDetails = (EditText) view.findViewById(R.id.edit_Details);
mDatabase = FirebaseDatabase.getInstance().getReference();
mRef = FirebaseDatabase.getInstance().getReference().child("Speakers");
speakerPick.setOnItemSelectedListener(this);
saveEvent.setOnClickListener(this);
mRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for(DataSnapshot childrenSnapshot : dataSnapshot.getChildren()){
String name = childrenSnapshot.child("name").getValue(String.class);
String bio = childrenSnapshot.child("bio").getValue(String.class);
String photo = childrenSnapshot.child("photoURL").getValue(String.class);
Speaker newSpeaker = new Speaker(name, bio, photo);
speakers = new ArrayList<Speaker>();
speakers.add(newSpeaker);
}
speakerPick = (Spinner) view.findViewById(R.id.spinner_Speakers);
sAdapter = new ArrayAdapter<>(getActivity(), android.R.layout.simple_spinner_item, speakers);
sAdapter.setDropDownViewResource(android.R.layout.simple_spinner_item);
speakerPick.setAdapter(sAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
return view;
}
ist die LogCat:
Process: bwastedsoftware.district_7570_conference, PID: 23860
java.lang.NullPointerException: Attempt to invoke interface method 'int java.util.List.size()' on a null object reference
at android.widget.ArrayAdapter.getCount(ArrayAdapter.java:337)
at android.widget.AbsSpinner.setAdapter(AbsSpinner.java:115)
at android.widget.Spinner.setAdapter(Spinner.java:508)
at android.support.v7.widget.AppCompatSpinner.setAdapter(AppCompatSpinner.java:389)
at bwastedsoftware.district_7570_conference.Create_EventFragment$1.onDataChange(Create_EventFragment.java:79)
at com.google.android.gms.internal.zzbmz.zza(Unknown Source)
at com.google.android.gms.internal.zzbnz.zzYj(Unknown Source)
at com.google.android.gms.internal.zzboc$1.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5417)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
„Die Fehlerzeile ist 79“ Arraylist ... ähm ... Sie erwarten nicht, uns zu zählen, oder machst du? – 0X0nosugar
Fügen Sie einen Fehler von Logcat –
Entschuldigung, ich musste schnell buchen, und nach Hause fahren. Habe nicht bemerkt, dass die Zahlen nicht angezeigt wurden. Ich habe die Frage aktualisiert, es gibt jetzt eine bestimmte Zeile. Der Fehler wird sofort gemeldet. –