2017-10-16 2 views
-2

Ich weiß nicht, was falsch mit dem Code ..App Stopped - retriving Daten von Feuerbasis

wenn ich die Informationen eingeben, meine App zeigt - leider gestoppt. Um auf beide Zonen zuzugreifen, habe ich oben die Zeichenfolge deklariert. IDE zeigt auch keinen Fehler an.

Ich habe auch einige Antworten von Stackoverflow gefolgt, aber der Fehler bleibt derselbe.

Ich möchte von hier Daten retrive My Firebase data

und mein Code -

public class LoginPage extends AppCompatActivity { 

FirebaseDatabase database; 
DatabaseReference myRef; 
String name, password, email, edtName, edtPassword; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_login_page); 

    final EditText uname, pass; 
    Button login, signup; 

    uname = (EditText) findViewById(R.id.editUsername); 
    pass = (EditText) findViewById(R.id.editPassword); 
    login = (Button) findViewById(R.id.buttonLogin); 
    signup = (Button) findViewById(R.id.buttonSignup); 

    edtName = uname.getText().toString(); 
    edtPassword = pass.getText().toString(); 

    login.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(LoginPage.this, "Button Tapped", Toast.LENGTH_SHORT).show(); 
      DatabaseReference zonesRef = FirebaseDatabase.getInstance().getReference("sampBase"); 
      DatabaseReference zone1Ref = zonesRef.child(name); 
      DatabaseReference zone1NameRef = zone1Ref.child("Name"); 
      DatabaseReference zone1PassRef = zone1Ref.child("Password"); 

      // name retrive 
      zone1NameRef.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        name = dataSnapshot.getValue(String.class); 
        Toast.makeText(LoginPage.this, name+" is name", Toast.LENGTH_SHORT).show(); 
       } 
       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 

      // password retrive 
      zone1PassRef.addValueEventListener(new ValueEventListener() { 
       @Override 
       public void onDataChange(DataSnapshot dataSnapshot) { 
        password = dataSnapshot.getValue(String.class); 
        if(password != edtPassword){ 
         Toast.makeText(LoginPage.this, "Wrong password.!", Toast.LENGTH_SHORT).show(); 
         pass.setText(""); 
         return; 
        } 
        else{ 
         Toast.makeText(LoginPage.this, "Login Successful.!", Toast.LENGTH_SHORT).show(); 

         Intent i = new Intent(LoginPage.this, HomePage.class); 
         i.putExtra("Name", name); 
         startActivity(i); 

        } 
       } 

       @Override 
       public void onCancelled(DatabaseError databaseError) { 

       } 
      }); 
     } 
    }); 

    } 
} 
+0

ich denke 'DatabaseReference zone1Ref = zonesRef.child (name);' 'name' an dieser Stelle – Omer

+0

Druck der Stack-Trace bitte null ist, überprüfen Sie folgende: https://stackoverflow.com/questions/7841232/java -android-how-to-out-a-full-stack-Ablaufverfolgung –

Antwort

1

Sie haben nicht asharfulais Wert name Variablen zugewiesen.

Da ich Ihren Code gelesen habe, konnte ich die Zuordnung nicht bemerken. Wenn ich richtig bin, ist Ihr name Null und Sie können null nicht zu child() Methode übergehen.

Sie können dies beheben, indem Sie einfach den Wert zuweisen, bevor Sie weitere (tiefere) Referenzen erhalten.

name ="asharfulais"; 

Hinweise:

  1. Als App könnte mehr Nutzer haben, sollten Sie das Abrufen eher die Benutzer-ID als deklarieren ihre Benutzernamen.
  2. Es empfiehlt sich, String-Variablen (Child-Namen in der Datenbank) zu deklarieren, die sich niemals als Konstanten in einer separaten Klasse ändern (z. B. Constants.java).
Verwandte Themen