как я могу сделать сообщение об ошибке, если данные не вставлены в firebase (это мой код)

# #android #firebase #firebase-realtime-database

#Android #огневая база #firebase-база данных в реальном времени

Вопрос:

это мой сканер qr-кода

 databaseReference.child(id).setValue(data).addOnCompleteListener(new OnCompleteListenerlt;Voidgt;() {  @Override  public void onComplete(@NonNull Tasklt;Voidgt; task) {  onBackPressed();  if (task.isSuccessful()) {  Toast.makeText(getApplicationContext(), "DATA INSERTED", Toast.LENGTH_SHORT).show();  }  }  }); }  

успешная задача-это работа

Комментарии:

1. То есть if там, как насчет и else ?

2. я пытался поставить что-то еще, но это не работает

3. Пожалуйста, покажите, что вы пробовали с else тем, что предложила кутико, и как вы это проверили.

4. могу ли я прокомментировать код или я просто отредактирую его? @ФранкванПуффелен

5. @hsai Просто отредактируйте свой вопрос. Под ним есть кнопка редактирования. Пожалуйста, также ответьте @.

Ответ №1:

В вашем коде я вижу, что вы используете неправильный onBackPressed();

 databaseReference.child(id).setValue(data).addOnCompleteListener(new OnCompleteListenerlt;Voidgt;() {  @Override  public void onComplete(@NonNull Tasklt;Voidgt; task) {  if (task.isSuccessful()) {  Toast.makeText(getApplicationContext(), "DATA INSERTED", Toast.LENGTH_SHORT).show();  } else {  // Error handling here  Toast.makeText(getApplicationContext(), "DATA INSERT ERROR", Toast.LENGTH_SHORT).show();  }  onBackPressed(); //This will exit the screen, you should consider whether to use it  } });  

Обновить: Я обновил код, лучший способ отображать тосты как для фрагмента, так и для действия. И я добавил Log.d, чтобы проверить, где запускается программа и работает ли она должным образом

 import android.os.Bundle; import android.util.Log; import android.widget.Toast;  import androidx.annotation.Nullable; import androidx.appcompat.app.AppCompatActivity; import androidx.fragment.app.Fragment;  public class BaseFragment extends Fragment {  private static final int MSG_SHOW_TOAST = 1;   void displayMessage(String message, boolean isLengthLong) {  requireActivity().runOnUiThread(new Runnable() {  @Override  public void run() {  int longShow = isLengthLong ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT;  Toast.makeText(requireActivity(), message, longShow).show();  }  });  } }  public class Demo extends BaseFragment {  private String TAG = getClass().getSimpleName();   @Override  public void onCreate(@Nullable Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  displayMessage("Ahihi", false);  }   public void yourMethod() {  databaseReference.child(id).setValue(data).addOnCompleteListener(new OnCompleteListenerlt;Voidgt;() {  @Override  public void onComplete(@NonNull Tasklt;Voidgt; task) {  // Put the log here, Check the log outputted from mobile on android studio to make sure this is working  Log.d(TAG, "yourMethod: onComplete: status task is "   task.isSuccessful());  if (task.isSuccessful()) {  displayMessage("DATA INSERTED", true);  } else {  // Put the log here, Check the log outputted from mobile on android studio to make sure this is working  Log.d(TAG, "yourMethod: onComplete: status task is ERROR ");  displayMessage("DATA INSERT ERROR", true);  }  onBackPressed(); //This will exit the screen, you should consider whether to use it  }  });  }   @Override  public void onDestroy() {  super.onDestroy();  } }  

//========================================= ниже приведен код для действий

 public class BaseActivity extends AppCompatActivity {  void displayMessage(String message, boolean isLengthLong) {  runOnUiThread(new Runnable() {  @Override  public void run() {  int longShow = isLengthLong ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT;  Toast.makeText(getApplicationContext(), message, longShow).show();  }  });  } }  public class Demo extends BaseActivity {  private String TAG = getClass().getSimpleName();   @Override  public void onCreate(@Nullable Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  displayMessage("Ahihi", false);  }   public void yourMethod() {  databaseReference.child(id).setValue(data).addOnCompleteListener(new OnCompleteListenerlt;Voidgt;() {  @Override  public void onComplete(@NonNull Tasklt;Voidgt; task) {  // Put the log here, Check the log outputted from mobile on android studio to make sure this is working  Log.d(TAG, "yourMethod: onComplete: status task is "   task.isSuccessful());  if (task.isSuccessful()) {  displayMessage("DATA INSERTED", true);  } else {  // Put the log here, Check the log outputted from mobile on android studio to make sure this is working  Log.d(TAG, "yourMethod: onComplete: status task is ERROR ");  displayMessage("DATA INSERT ERROR", true);  }  onBackPressed(); //This will exit the screen, you should consider whether to use it  }  });  }   @Override  public void onDestroy() {  super.onDestroy();  } }  

Комментарии:

1. я попробовал это, и все равно никаких ошибок, сэр

2. Можете ли вы отправить мне сообщение об ошибке

3. Нет ошибки, сэр, просто нет сообщения о тосте, если qr-код неверен

4. Я обновил свой пост, проверьте его, пожалуйста

5. спасибо, подожди, я попробую