Не могу закончить sh Деятельность - PullRequest
0 голосов
/ 09 апреля 2020

Я попытался className.this.fini sh и finishActivity (), чтобы вызвать завершение своей деятельности, и я инициализировал эту операцию следующими методами - startActivityForResult () или finishAndRemoveTask ()

. Эта операция предполагает регистрацию устройства. Это делается, когда в разделе Устройства / (MA C адрес устройства) / Пользователи / сохраняется в пожарной базе до 4 различных маркеров уведомлений 4 различных пользователей. Так что я пытаюсь сделать, но падает, чтобы проверить, есть ли у номера 1 информация, проверьте 2, если есть информация, проверьте 3, и если это имеет информацию, проверьте 4, если у всех есть информация, приложение показывает сообщение «вы достигли максимального числа пользователей ". Но если доступно только одно число, то предполагается сохранить в этом номере и только в этом номере токен уведомления.

Что происходит, когда я нажимаю кнопку, то l oop никогда не кончится. он отправляет один и тот же токен уведомления для четырех пользователей, отображает сообщение «Вы достигли максимального числа пользователей», а затем возвращается к действию до этого, но все еще выполняет код регистрации. Я знаю это, потому что, если я удалил пользователя в firebase, он сразу же повторно отправит информацию, и вы снова увидите сообщение «вы достигли максимального числа пользователей»

это код действия, которое отправляет информацию :

    @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) {

                }
            });
        }
    });
}

и я создаю это действие так:

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

Firebase выглядит так:

enter image description here

Когда он предназначен только для пользователя 1 или если у пользователя 1 есть какие-то данные, он должен обновить пользователя 2 и то же самое с 3 и 4

1 Ответ

0 голосов
/ 09 апреля 2020

Я нашел ошибку. insted of:

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

изменить на:

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