-2

我是Firebase的初學者。我試圖存儲一些數據。當我按下按鈕時,它會顯示java.lang.NullPointerException。這是我遇到的錯誤。請幫我解決問題,因爲我前幾天已經在這裏停留了。在聲明Firebase的DatabaseReference後按下按鈕時獲取NullPointerException

E/AndroidRuntime: FATAL EXCEPTION: main 
        Process: com.google.online_mobile_flexi_parking, PID: 10380 
        java.lang.NullPointerException 
         at com.google.online_mobile_flexi_parking.RegisterPage$1.onClick(RegisterPage.java:90) 
         at android.view.View.performClick(View.java:4444) 
         at android.view.View$PerformClick.run(View.java:18440) 
         at android.os.Handler.handleCallback(Handler.java:733) 
         at android.os.Handler.dispatchMessage(Handler.java:95) 
         at android.os.Looper.loop(Looper.java:136) 
         at android.app.ActivityThread.main(ActivityThread.java:5028) 
         at java.lang.reflect.Method.invokeNative(Native Method) 
         at java.lang.reflect.Method.invoke(Method.java:515) 
         at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:788) 
         at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:604) 
         at dalvik.system.NativeStart.main(Native Method) 

這裏是我的代碼

public class RegisterPage extends AppCompatActivity { 

private Firebase mRef; 
Context ctx = this; 
EditText Password, Phone, Email, IdentityCard, FullName, CarPlate; 
String registerpassword, phone, email, identitycard, fullname, carplate; 
Button register; 
private Firebase userRef; 
private Firebase firebaseAuth; 
private Session session; 
DatabaseReference mDatabase; 
FirebaseUser user; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_register_page); 

    Password = (EditText) findViewById(R.id.txtRegisterPassword); 
    Phone = (EditText) findViewById(R.id.txtPhone); 
    Email = (EditText) findViewById(R.id.txtEmail); 
    IdentityCard = (EditText) findViewById(R.id.txtICardNo); 
    FullName = (EditText) findViewById(R.id.txtFullName); 
    CarPlate = (EditText) findViewById(R.id.txtCarPlate); 
    register = (Button) findViewById(R.id.btnRegister); 

    SharedPreferences prefs = ctx.getSharedPreferences("register", MODE_PRIVATE); 
    email = prefs.getString("email", ""); 
    registerpassword = prefs.getString("password", ""); 
    Email.setText(email); 
    Password.setText(registerpassword); 
    mDatabase = FirebaseDatabase.getInstance().getReference(); 
    register.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      phone = Phone.getText().toString(); 
      identitycard = IdentityCard.getText().toString(); 
      fullname = FullName.getText().toString(); 
      carplate = CarPlate.getText().toString(); 
      Account account = new Account(email, fullname, Integer.valueOf(phone), carplate, Integer.valueOf(identitycard)); 
      mDatabase.child(user.getUid()).setValue(account); 
      Toast.makeText(getBaseContext(), "Register Successfully...", Toast.LENGTH_LONG).show(); 
      Intent in = new Intent(RegisterPage.this, MainActivity.class); 
      startActivity(in); 
      finish(); 

     } 
    }); 
} 

    public void onclickCancelRegister2(View view) { 
    FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 
    if (user != null) { 
     user.delete() 
       .addOnCompleteListener(new OnCompleteListener<Void>() { 
        @Override 
        public void onComplete(@NonNull Task<Void> task) { 
         if (task.isSuccessful()) { 
          Toast.makeText(RegisterPage.this, "Cancel Registration", Toast.LENGTH_SHORT).show(); 
          startActivity(new Intent(RegisterPage.this, MainActivity.class)); 
          finish(); 
         } else { 
          Toast.makeText(RegisterPage.this, "Failed to delete your account!", Toast.LENGTH_SHORT).show(); 
         } 
        } 
       }); 
    } 

}} 
+0

什麼是線90? –

+1

mDatabase.child(user.getUid())。setValue(account); – Jane

+0

從您的程序粘貼到整個程序中。因爲錯誤是在線90 –

回答

0

你從來沒有點擊之前分配user

mDatabase = FirebaseDatabase.getInstance().getReference(); 
// Add this here 
user = FirebaseAuth.getInstance().getCurrentUser(); 

register.setOnClickListener(new View.OnClickListener() { 

,並刪除再次分配用戶

public void onclickCancelRegister2(View view) { 
    // --> FirebaseUser user = FirebaseAuth.getInstance().getCurrentUser(); 

,注意安全

Account account = new Account(email, fullname, Integer.valueOf(phone), carplate, Integer.valueOf(identitycard)); 
    if (user != null) { 
    mDatabase.child(user.getUid()).setValue(account); 
    }