我想登录两种不同的用户类型。所以我这样编码。但是addListenerForSingleValueEvent中的for循环在此不起作用,请帮助。它好像不会进入for循环。请帮助我在这个登录卡。JAVA
login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
performLogin();
}
});
}
private String email,password;
private void performLogin() {
email=emaillog.getText().toString().trim();
password=passwordlog.getText().toString().trim();
if(!Patterns.EMAIL_ADDRESS.matcher(email).matches()) {
Toast.makeText(this, "Invalid Email Address", Toast.LENGTH_SHORT).show();
return;
}
if(TextUtils.isEmpty(password)) {
Toast.makeText(this, "Password should not be empty", Toast.LENGTH_SHORT).show();
return;
}
progressDialog.setMessage("Logging In....");
progressDialog.show();
firebaseAuth.signInWithEmailAndPassword(email,password)
.addOnSuccessListener(new OnSuccessListener<AuthResult>() {
@Override
public void onSuccess(@NonNull AuthResult authResult) {
//logged in successfully
checkOnline();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//logging in failed
progressDialog.dismiss();
Toast.makeText(Login.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private void checkOnline() {
//after loggin in
progressDialog.setMessage("Checking User....");
HashMap<String, Object> hashMap = new HashMap<>();
hashMap.put("online","true");
//update value to db
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
ref.child(firebaseAuth.getUid()).updateChildren(hashMap)
.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(@NonNull Void unused) {
//Update by checking user
checkUserType();
}
})
.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
//update unsuccessfully
progressDialog.dismiss();
Toast.makeText(Login.this, ""+e.getMessage(), Toast.LENGTH_SHORT).show();
}
});
}
private void checkUserType() {
progressDialog.setMessage("Checking UserType....");
//if the user is seller,then go into seller dashboard
// if the user is customer, then go into customer dashboard
DatabaseReference ref = FirebaseDatabase.getInstance().getReference("Users");
progressDialog.setMessage("Checking UserType1....");
ref.orderByChild("uid").equalTo(firebaseAuth.getUid())
.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot snapshot) {
**for (DataSnapshot ds: snapshot.getChildren()){
String accounttype =""+ds.child("accounttype").getValue();
if(accounttype == "Seller"){
startActivity(new Intent(Login.this,SellerDahboard.class));
}
else{
startActivity(new Intent(Login.this,SellerDahboard.class));
}
}**
}
@Override
public void onCancelled(@NonNull DatabaseError error) {
}
});
火基
第一步是忽略潜在的错误,并在取消后实现。
至少应该是这样的:
public void onCancelled(@NonNull DatabaseError databaseError) {
throw databaseError.toException();
}
或:
public void onCancelled(@NonNull DatabaseError databaseError) {
Log.e("Firebase", databaseError.toException());
}
如果这显示了来自数据库的异常,我建议搜索该错误消息,因为它可能已经被覆盖过了。
我有一个JPanel、窗口和一组JPanel和JLabel。我想在JFrame中添加5个JPanel,在每个JPanel中添加一个JLabel。每个JPanel将用于表示有关骰子的数据。 但是,当我运行代码时,只有最后一个JPanel出现在JFrame上,并带有文本“Dice 4”。我不明白为什么。 守则:
问题内容: 这有效: 但是,这不是: 在第二个示例中,数组未添加到自身。 问题答案: 是的,不是 您所做的可能也是有效的代码,但是现在您正在做 它适用于数字类型(我假设您有)。没有数组索引的简化示例: 样品: 输出: -5 -5 5 5 为了清晰起见,从评论中复制: 您基本上是在说。在这种情况下,仅需指示它是一个正整数即可。这是有效的代码,但这不是您想要的。
问题内容: 在这段代码中,为什么不按我的意愿初始化我的数组?是不是for-each循环并非旨在做到这一点,或者我只是没有正确使用它? 问题答案: for-each循环不适用于这种情况。您不能使用for-each循环来初始化数组。您的代码: 将转换为以下内容: 如果这是一个对象数组,它仍然会失败。基本上,for-each依次将集合或数组中的每个条目分配给您提供的变量,然后可以使用该变量。该变量 不
我试图理解数组加法CoderByte问题的解决方案中的逻辑。这是问题提示——“使用JavaScript语言,让函数ArrayAdditionI(arr)获取存储在arr中的数字数组并返回字符串true,如果数组中的任何数字组合可以加到等于数组中的最大数字,否则返回字符串false。例如:如果arr包含[4, 6, 23, 10, 1, 3],则输出应该返回true,因为4 6 10 3 = 23。
我在mysql数据库中有一个数组数据,我想在使用Ajax得到结果后,用for循环逐个显示出来。过程是这样的。 这是将呈现每个项的段落 null 当我尝试使用for循环时,它会说语法错误,意外的for循环被取走,我该如何解决这个问题,例如,这里我使用sample for循环来使事情尽可能简单。
问题内容: 我也在学习Java和android。我们可以在while循环中执行的几乎所有事情都可以在while循环中执行。 我发现一个简单的条件,使用while循环比for循环更好 如果我必须在程序中使用counter的值,那么我认为while循环要比for循环好 使用while循环 在这种情况下,我发现while循环要比for循环好,因为如果要在for循环中实现相同的效果,则必须将counter