gpt4 book ai didi

java - 无法完成 Activity

转载 作者:行者123 更新时间:2023-12-01 17:31:32 24 4
gpt4 key购买 nike

我已尝试 className.this.finish 和 finishActivity() 来调用我的 Activity 的完成,并且我已使用以下方法初始化 Activity - startActivityForResult() 或 finishAndRemoveTask()

此 Activity 的建议是注册一个设备,这是在设备/(设备的 MAC 地址)/用户/下完成的,它在 Fire Base 中最多保存 4 个不同用户的 4 个不同的通知 token 。所以我想做但它下降的是检查数字 1 是否有信息,检查 2 如果有信息,检查 3 如果有信息,检查 4 如果所有都有信息应用程序显示一条消息说“你已达到最大用户数”。但是,如果有一个可用的数字,则它假定将保存在该数字中,并且仅在该数字中保存通知 token 。

发生的情况是,当我单击按钮时,循环永远不会结束。它为四个用户发送相同的通知 token ,显示消息“您已达到最大用户数”,然后返回到此之前的 Activity ,但仍然执行注册代码。我知道这一点是因为如果我在 firebase 中删除了用户,它会立即重新发送信息,并且您可以再次看到消息“您已达到最大用户数”

这是发送信息的 Activity 的代码:

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

fAuth = FirebaseAuth.getInstance();
entr = findViewById(R.id.AddButton);
mDatabase = FirebaseDatabase.getInstance().getReference();
sDatabase = FirebaseDatabase.getInstance().getReference();
aDatabase = FirebaseDatabase.getInstance().getReference();
MAC =findViewById(R.id.macCerca);
NOM = findViewById(R.id.momCerca);
configured = false;
getUserProfile();
getNotificationId();

entr.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
MacCerca = MAC.getText().toString().toUpperCase();
NombreCerca = NOM.getText().toString();
//mDatabase.child("Devices").child(MacCerca).child("Id").setValue("AD:23");
mDatabase.child("Devices").child(MacCerca).child("Users").addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
String user1 = (String) dataSnapshot.child("1").getValue();
String user2 = (String) dataSnapshot.child("2").getValue();
String user3 = (String) dataSnapshot.child("3").getValue();
String user4 = (String) dataSnapshot.child("4").getValue();
if(user1 == null){
aDatabase.child("Devices").child(MacCerca).child("Users").child("1").setValue(token);
aDatabase.child("Devices").child(MacCerca).child("NombreCerca").setValue(NombreCerca);
aDatabase.child("Users").child(mail).child("Device").setValue(MacCerca);
AddCerca.this.finish();
}else if(user2 ==null){
aDatabase.child("Devices").child(MacCerca).child("Users").child("2").setValue(token);
aDatabase.child("Devices").child(MacCerca).child("NombreCerca").setValue(NombreCerca);
aDatabase.child("Users").child(mail).child("Device").setValue(MacCerca);
AddCerca.this.finish();
}else if(user3 ==null){
aDatabase.child("Devices").child(MacCerca).child("Users").child("3").setValue(token);
aDatabase.child("Devices").child(MacCerca).child("NombreCerca").setValue(NombreCerca);
aDatabase.child("Users").child(mail).child("Device").setValue(MacCerca);
AddCerca.this.finish();
}else if(user4 ==null){
aDatabase.child("Devices").child(MacCerca).child("Users").child("4").setValue(token);
aDatabase.child("Devices").child(MacCerca).child("NombreCerca").setValue(NombreCerca);
aDatabase.child("Users").child(mail).child("Device").setValue(MacCerca);
AddCerca.this.finish();
}else{
Toast.makeText(AddCerca.this, "Límite de usuarios registrados exedidos", Toast.LENGTH_SHORT).show();
AddCerca.this.finish();
}
}

@Override
public void onCancelled(@NonNull DatabaseError databaseError) {

}
});
}
});
}

我创建了这样的 Activity :

startActivity(new Intent(CercaElectrica.this, AddCerca.class));

Firebase 看起来像这样:

enter image description here

当它应该只在用户1中时,或者如果用户1有一些数据它必须更新用户2,3和4也是如此

最佳答案

我发现了错误。插入:

mDatabase.child("Devices").child(MacCerca).child("Users").addValueEventListener(new ValueEventListener() {

更改为:

mDatabase.child("Devices").child(MacCerca).child("Users").addListenerForSingleValueEvent(new ValueEventListener() {

关于java - 无法完成 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61112719/

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