Ich habe Probleme, den Status eines boolean aus meiner Firebase-Datenbank in einen Schalter zu lesen, den ich habe.Fehler beim Lesen des Firebase-Schalters, wenn ich Daten aktualisiere
Ich halte eine Null-Zeiger-Ausnahme erhalten, aber der Wert in der Datenbank vorhanden, so nicht sicher, was ich falsch gemacht haben
java.lang.NullPointerException: Versuch android.content.Context android virtuelle Methode‘aufzurufen .view.ViewGroup.getContext()‘auf ein null-Objekt Referenz
Fragment
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.display_match_details_fragment, container, false);
//FIREBASE
mFirebaseAuth = FirebaseAuth.getInstance();
firebaseUser = mFirebaseAuth.getCurrentUser();
final String uId = firebaseUser.getUid();
mFirebaseDatabase = FirebaseDatabase.getInstance();
usersDatabase = mFirebaseDatabase.getReference().child("users");
groupsDatabase = mFirebaseDatabase.getReference().child("groups");
tvAddedBy = (TextView) view.findViewById(R.id.tvAddedByMatchDisplay);
tvMatchTime = (TextView) view.findViewById(R.id.tvMatchTime);
tvMatchDay = (TextView) view.findViewById(R.id.tvMatchDay);
switchPlaying = (Switch) view.findViewById(R.id.switchPlay);
btnConfirmStatus = (Button) view.findViewById(R.id.btnPlayingConfirm);
switchPlaying.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton compoundButton, boolean playingExtra) {
Snackbar.make(compoundButton, "Playing: " + playingExtra, Snackbar.LENGTH_SHORT)
.setAction("ACTION", null).show();
}
});
btnConfirmStatus.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
}
});
readPlaying();
return view;
}// end onCreate
// Read playing times from DB
private void readPlaying() {
usersDatabase.child(firebaseUser.getUid()).child("playingExtra").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
if(!dataSnapshot.exists() || dataSnapshot.getValue() == null) {
Toast.makeText(getActivity(), "NULL", Toast.LENGTH_SHORT).show();
}
else{
Boolean playingExtra = Boolean.valueOf(dataSnapshot.getValue().toString());
switchPlaying.setChecked(playingExtra);
}
}
Voll Stack Trace
05-08 15:57:00.461 2392-2601/com..squad E/Surface: getSlotFromBufferLocked: unknown buffer: 0xb8e53e40
05-08 15:57:01.046 2392-2392/com.ciaranbyrne.squad E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.Context android.view.ViewGroup.getContext()' on a null object reference
at android.support.design.widget.Snackbar.<init>(Snackbar.java:192)
at android.support.design.widget.Snackbar.make(Snackbar.java:224)
at com.ciaranbyrne.squad.DisplayMatchFragment$1.onCheckedChanged(DisplayMatchFragment.java:97)
at android.widget.CompoundButton.setChecked(CompoundButton.java:156)
at android.widget.Switch.setChecked(Switch.java:1070)
at com.ciaranbyrne.squad.DisplayMatchFragment$3.onDataChange(DisplayMatchFragment.java:134)
at com.google.android.gms.internal.zzajp.zza(Unknown Source)
at com.google.android.gms.internal.zzakp.zzcxi(Unknown Source)
at com.google.android.gms.internal.zzaks$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:168)
at android.app.ActivityThread.main(ActivityThread.java:5845)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:687)
05-08 15:57:15.694 2392-2601/com.ciaranbyrne.squad E/OpenGLRenderer: GL error: Out of memory!
Bitte fügen Sie Ihre Datenbankstruktur hinzu. –
Wenn Sie zuerst eine Frage zu einem Absturz stellen, hilft die vollständige Stapelverfolgung dabei, genau festzustellen, welche Zeile fehlerhaft ist. Zweitens bedeutet die Fehlermeldung, dass Sie an der fehlerhaften Leitung etwas wie " .getContext()" tun, aber die "ViewGroup" ist "null", also bin ich mir nicht sicher, ob Firebase etwas damit zu tun hat . Schließlich ist nur 'dataSnapshot.getValue (Boolean.class);' notwendig, wenn der Wert mit 'reference.setValue () gesetzt wurde;' –
Sunshinator
Der Stack-Trace wurde wie vorgeschlagen hinzugefügt, ich habe gerade versucht, boolean playingExtra = dataSnapshot zu verwenden. getValue (Boolean.class); aber kein Glück –