gpt4 book ai didi

java - 如果用户尚未登录,如何为 getDisplayName() 写入 if 语句?

转载 作者:行者123 更新时间:2023-12-02 00:07:40 24 4
gpt4 key购买 nike

我在运行应用程序时遇到此问题:

Attempt to invoke virtual method java.lang.String com.google.firebase.auth.FirebaseUser.getDisplayName() on a null object reference

我想制作一个用户无需先登录即可浏览的应用程序。如何将 name.setText("hi, "+ currentUser.getDisplayName()); 放入 if 语句中 我应该在 if 语句的编码中写什么?

这是我的MainActivity java 类:

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

name=findViewById(R.id.name);

// //display customer's account name
name.setText("hi, " + currentUser.getDisplayName());

//ini
firebaseAuth = FirebaseAuth.getInstance();
currentUser = firebaseAuth.getCurrentUser();
databaseReference = FirebaseDatabase.getInstance().getReference("Cust");



@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_option,menu);
return true;
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
int id= item.getItemId();
if (id == R.id.logout){
logout();
return true;
}
else if (id==R.id.login){
login();
return true;
}
return super.onOptionsItemSelected(item);
}

private void login() {
Intent intent= new Intent(this,LoginActivity.class);
startActivity(intent);

}

private void logout() {
FirebaseAuth.getInstance().signOut();
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivity(intent);
finish();
}
}

最佳答案

检查 currentUser 是否不为空:

if (currentUser != null) name.setText("hi, " + currentUser.getDisplayName());

而且,在您的代码中,您在 从 firebase 初始化它之前请求 getDisplayName,因此它将始终为 null:

firebaseAuth = FirebaseAuth.getInstance();
currentUser = firebaseAuth.getCurrentUser();
databaseReference = FirebaseDatabase.getInstance().getReference("Cust");

if (currentUser != null) name.setText("hi, " + currentUser.getDisplayName());

关于java - 如果用户尚未登录,如何为 getDisplayName() 写入 if 语句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58145138/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com