android - 用户在firebase中不存在?
问题描述
当我输入一个存在于我的数据库中的用户 ID 然后它成功登录时,我对 firebase 进行了身份验证,但是当我输入一个不在我的 firebase 中的错误密钥时,apk 就会崩溃。
private DatabaseReference ref;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
userID = (EditText) findViewById(R.id.Username);
ref = FirebaseDatabase.getInstance().getReference().child("muhamadgamerstrings");
}
public void btnlogin_Click(View view) {
final String usrID = userID.getText().toString();
try {
ref.child(usrID).addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
muhamadgamerstrings Userr = dataSnapshot.getValue(muhamadgamerstrings.class);
if(usrID.equals(Userr.getUserID()))
{
Toast.makeText(MainActivity.this,
"login Succesful",Toast.LENGTH_SHORT).show();
Intent start = new Intent(MainActivity.this,start.class);
startActivity(start);
}else {
Toast.makeText(MainActivity.this,
"Wrong Key",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
}catch (Exception xe){
Toast.makeText(MainActivity.this,
"login false",Toast.LENGTH_SHORT).show();
}
}
}
那是我的主要活动。错误来自 logcat:
if(usrID.equals(Userr.getUserID()))
java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.yuhamadgamer.loginwithfire.muhamadgamerstrings.getUserID()' on a null object reference
解决方案
Firebase 实时数据库muhamadgamerstrings中的值为 null。
因为
当我输入错误的密钥时,这不是我的火力基地,那么 apk 就会崩溃
当您键入一个不在数据库中的 id 时,数据库将发送一个空快照。这就是NullPointerException的原因。
所以你需要在进行操作之前检查它是否为空
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
muhamadgamerstrings Userr = dataSnapshot.getValue(muhamadgamerstrings.class);
if(Userr != null && usrID.equals(Userr.getUserID()))
{
Toast.makeText(MainActivity.this,
"login Succesful",Toast.LENGTH_SHORT).show();
Intent start = new Intent(MainActivity.this,start.class);
startActivity(start);
}else {
Toast.makeText(MainActivity.this,
"Wrong Key",Toast.LENGTH_SHORT).show();
}
}
推荐阅读
- go - 如何在 fyne 中调整输入框的大小
- java - 突出显示可导航单元格中的文本
- python - 并行运行服务器和异步队列
- php - WordPress 调试问题:无法添加菜单项或新页面
- javascript - JS排序对象数组,里面有数组
- vuejs2 - 如何动态更改输入类型
- web-scraping - Scrapy - 即使添加标题后也无法解决 403 错误
- sql - BQ & Tableau - 创建一个包含 200 万行数据和两个源的 tableau 数据源。请指教
- angular - 如何对使用 Observable 的 Angular Material Table 列进行过滤
作为数据源 - java - 为什么我不能将 @Scheduled 与外部化的 Spring Cloud 属性文件一起使用?