Я создаю приложение, и часть его состоит в том, чтобы отправить идентификатор устройства в firebase, и если этот идентификатор устройства будет отправлен, он загрузит фиктивный статус устройства класса, который позже будет изменен и использован NodeMCU.
Но проблема в том, что, когда я создаю одну ссылку на базу данных и помещаю идентификатор устройства в базу данных Firebase, а внутри нее, если я пытаюсь поместить еще один addOnCompleteListener для передачи класса состояния фиктивного устройства, я получаю некоторые ошибки.
Моя функция для отправки кода и фиктивного объекта состояния устройства при отправке кода.
void submitCode(String scannedCode){
code=scannedCode;
databaseReference.setValue(code).addOnCompleteListener(
this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
DeviceStatus deviceStatus = new DeviceStatus();
deviceStatus.deviceID = code;
FirebaseDatabase.getInstance().getReference("DeviceStatus").child(code).setValue(deviceStatus).addOnCompleteListener(
this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> subTask) {
if (subTask.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Product ID Successfully Entered", Toast.LENGTH_LONG).show();
finish();
startActivity(new Intent(getApplicationContext(), switchStatus.class));
}
}
}
);
}
}
}
);
}
Здесь databaseReference является глобальной переменной как:
DatabaseReference databaseReference;
И инициализируется как
databaseReference = FirebaseDatabase.getInstance().getReference("DeviceStatus").child(devideID);
Предупреждение редактора Android Studio гласит:
Cannot resolve method 'addOnCompleteListener(anonymous com.google.android.gms.tasks.OnCompleteListener<java.lang.Void>, anonymous com.google.android.gms.tasks.OnCompleteListener<java.lang.Void>)'
Ошибка сборки говорит
error: no suitable method found for addOnCompleteListener(<anonymous OnCompleteListener<Void>>,<anonymous OnCompleteListener<Void>>)
method Task.addOnCompleteListener(Executor,OnCompleteListener<Void>) is not applicable
(argument mismatch; <anonymous OnCompleteListener<Void>> cannot be converted to Executor)
method Task.addOnCompleteListener(Activity,OnCompleteListener<Void>) is not applicable
(argument mismatch; <anonymous OnCompleteListener<Void>> cannot be converted to Activity)
Обновлена функция:
void submitCode(String scannedCode){
code=scannedCode;
databaseReference.setValue(code).addOnCompleteListener(
this, new OnCompleteListener<Void>() {
@Override
public void onComplete(@NonNull Task<Void> task) {
if (task.isSuccessful()){
// sendSwitchStatus(code);
DeviceStatus deviceStatus = new DeviceStatus();
deviceStatus.deviceID = code;
FirebaseDatabase.getInstance().getReference("DeviceStatus").child(code).setValue(deviceStatus).addOnCompleteListener( getBaseContext(), new OnCompleteListener<Void>(){
public void onComplete(@Nullable Task<void> subTask){
if (subTask.isSuccessful()) {
Toast.makeText(getApplicationContext(), "Product ID Successfully Registered", Toast.LENGTH_LONG).show();
finish();
startActivity(new Intent(getApplicationContext(), switchStatus.class));
}
}
});
}
}
}
);
}