# #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. спасибо, подожди, я попробую