0

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) 
+0

„Die Fehlerzeile ist 79“ Arraylist ... ähm ... Sie erwarten nicht, uns zu zählen, oder machst du? – 0X0nosugar

+0

Fügen Sie einen Fehler von Logcat –

+0

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. –

Antwort

0

Sie definiert haben nicht die Array-Liste

sAdapter = new ArrayAdapter <> (getActivity(), android.R.layout.simple_spinner_item, Lautsprecher);

Lautsprecher ist eine Array-Liste mit Null-Zeiger Ausnahme

definieren Lautsprecher String

 ArrayList<Speakers> speakers = new List<Speakers>(); 
+0

Danke für die Hilfe, wie sich herausstellt, wies mein Logcat auf die falsche Zeile des Fehlers hin, und ich hatte meine Instanziierung gleich zu Beginn, ich vermasselte es, indem ich versuchte den Nullzeiger zu quetschen. Ich musste auch meinen Firebase-Anruf beheben. Ich schätze es. –

Verwandte Themen