2017-10-16 14 views
-2

からRetrivingデータをいただきましたコードと間違って、私は情報を入力したとき、私は..は、App停止 - firebase

を知らない、私のアプリのショーは - 残念ながら停止しました。 両方のゾーンにアクセスするには、文字列を先頭に宣言しました。 IDEにもエラーは表示されません。

私はまた、stackoverflowからいくつかの答えに従っているが、エラーは同じままです。

私はここ My Firebase data

と私のコードがあるからデータをretriveしたい - あなたはname変数にasharfulais値を割り当てていない

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

私は 'DatabaseReference zone1Ref = zonesRef.child(名前)だと思う;' 'NAME'がnullで、この時点で – Omer

+0

印刷スタックトレースをしてください、このチェック:https://stackoverflow.com/questions/7841232/javaを-android-how-to-print-out-full-stack-trace –

答えて

1

私はあなたのコードを読んだので、私はその割り当てに気づくことができませんでした。私が正しいとすれば、nameはnullであり、nullchild()メソッドに渡すことはできません。

これを修正するには、それ以上の(より深い)評判を得る前に値を割り当てるだけです。

name ="asharfulais"; 

注:

  1. は、より多くのユーザーを持つことができ、あなたのアプリとして、ユーザーのIDのではなく、宣言自分のユーザー名を取得を検討してください。
  2. 別のクラス(例:Constants.java)で定数として変更されない文字列変数(データベース内の子名)を宣言することをお勧めします。
関連する問題