我有一个允许我登录和退出的应用程序。注销按钮现在似乎使应用程序崩溃,当我以前工作正常时按下它。它仍然会注销用户,当您返回应用程序时,您必须再次登录。
我在下面的 create 方法中添加了我的全部内容,操作发生在底部。以防万一我添加了重复项或我遗漏的东西
//view objects
private TextView textViewUserEmail;
private Button buttonLogout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_profile);
buttonAddProducts = (Button) findViewById(R.id.buttonAddProducts);
buttonAddBeverages = (Button) findViewById(R.id.buttonAddBeverages);
buttonLogout = (Button) findViewById(R.id.buttonLogout);
firebaseAuth = FirebaseAuth.getInstance();
buttonAddProducts.setVisibility(View.GONE);
buttonAddBeverages.setVisibility(View.GONE);
databaseUsers = FirebaseDatabase.getInstance().getReference("users");
String uid = FirebaseAuth.getInstance().getCurrentUser().getUid();
DatabaseReference currentUserReference = databaseUsers.child(uid);
currentUserReference.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot userSnapshot) {
if (userSnapshot.exists()) {
User user = userSnapshot.getValue(User.class);
if(user.getAdminUser() == true)
{
buttonAddProducts.setVisibility(View.VISIBLE);
buttonAddBeverages.setVisibility(View.VISIBLE);
}
}
else{
Log.i("myInfoTag", "Connection problem");
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
throw databaseError.toException(); // don't ignore exceptions
}
});
//if the user is not logged in
//that means current user will return null
if(firebaseAuth.getCurrentUser() == null){
//closing this activity
finish();
//starting login activity
startActivity(new Intent(this, LoginActivity.class));
}
//getting current user
FirebaseUser user = firebaseAuth.getCurrentUser();
//initializing views
textViewUserEmail = (TextView) findViewById(R.id.textViewUserEmail);
//displaying logged in user name
textViewUserEmail.setText("Welcome "+user.getEmail());
buttonLogout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//logging out the user
firebaseAuth.signOut();
//closing activity
finish();
//starting login activity
startActivity(new Intent(ProfileActivity.this, SignUpActivity.class));
}
});
}
当我按下注销时,它只是崩溃,味精啤酒应用程序已停止
以下代码块不会立即将执行转移到已启动的活动。它仅启动该流程,并继续执行以下语句。
if(firebaseAuth.getCurrentUser() == null){
//closing this activity
finish();
//starting login activity
startActivity(new Intent(this, LoginActivity.class));
}
在您的情况下,以下语句之一是user.getEmail()
,NullPointerException
当没有用户登录时会抛出 a 。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句