在firebase实时数据库android中使用Uid时出现空指针异常



每当我在谷歌登录后尝试使用Uid上传数据时,它都会出现空指针异常

如何根据Uid将数据推送到firebase实时数据库

我是安卓系统的新手,请帮助

我的代码


import androidx.annotation.NonNull;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
import com.google.android.gms.tasks.OnCompleteListener;
import com.google.android.gms.tasks.Task;
import com.google.firebase.auth.FirebaseAuth;
import com.google.firebase.database.DatabaseReference;
import com.google.firebase.database.FirebaseDatabase;
import java.util.HashMap;
public class Register extends AppCompatActivity {
private Button val_btn;
private EditText customer_name, company_name, mobile_no;
private FirebaseAuth mAuth;
private FirebaseAuth.AuthStateListener mAuthListener;
private FirebaseDatabase mFirebaseDatabase;
private DatabaseReference mDatabase;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_register);
customer_name = (EditText) findViewById(R.id.ip_customer_name);
company_name = (EditText) findViewById(R.id.ip_company_name);
mobile_no = (EditText) findViewById(R.id.ip_mobile_no);
val_btn = (Button) findViewById(R.id.btn_validate);
mDatabase = FirebaseDatabase.getInstance().getReference();
val_btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String cust_name = customer_name.getText().toString().trim();
String comp_name = company_name.getText().toString().trim();
String mob_no = mobile_no.getText().toString().trim();
HashMap<String, String> datamap = new HashMap<String, String>();
datamap.put("Customer Name", cust_name);
datamap.put("Company Name", comp_name);
datamap.put("Mobile No", mob_no);
String currentuser = FirebaseAuth.getInstance().getCurrentUser().getUid();
mDatabase.child("Users").child(currentuser).setValue(datamap).addOnCompleteListener(new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()) {
Toast.makeText(Register.this, "updated  :)", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(Register.this, "error  :(", Toast.LENGTH_SHORT).show();
}
}
});
}
});
}
}

错误为

java.lang.NullPointerException:尝试在空对象引用上调用虚拟方法"java.lang.String.com.google.firebase.auth.FirebaseUser.getUid((">

FirebaseAuth.getInstance().getCurrentUser()返回null,这意味着用户在您调用它的那一刻没有登录。您的代码应该检查这种情况,或者使用侦听器来确定用户何时确实登录。

最新更新