【发布时间】:2020-03-24 23:08:49
【问题描述】:
每当我在谷歌登录后尝试使用 Uid 上传数据时,都会出现空指针异常
如何根据 Uid 将数据推送到 firebase 实时数据库
我是android新手,请帮忙
我的代码
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()”
【问题讨论】:
-
你处于登录状态吗?
-
是的,除非用户使用 google 登录,否则此活动不会打开。
标签: java android firebase firebase-realtime-database