Android несколько уведомлений, полученных с одним и тем же сообщением после нажатия кнопки в RecyclerView - PullRequest
0 голосов
/ 03 августа 2020

У меня проблема с моим уведомлением о sh. Я отправляю пользователю уведомление, чтобы сообщить, что он был принят на работу, а затем пользователь должен подтвердить или отклонить предложение о приеме на работу, но когда он нажимает для подтверждения или отклонения, другое уведомление приходит с тем же сообщением. Хорошо, теперь я покажу вам код, который может помочь

Это класс, в котором принимаются сообщения;

public class MyNotificationService extends FirebaseMessagingService {

private Random random;
{
 random  = new Random(1);
}


@Override
public void onMessageReceived(@NonNull RemoteMessage remoteMessage) {

    Log.i(TAG, "onMessageReceived: remote message:" + remoteMessage.getData());
    if(remoteMessage != null){
        Map<String, String> body = remoteMessage.getData();
        String title = body.get("title");
        if(title.equals(getString(R.string.notification_of_employment))) {
            int notificationId =random.nextInt(100);
            NotificationHandler.displayNotificationShopper(getApplicationContext(), title, body.get("place"),
                    body.get("when"), body.get("fee"), body.get("eName"),body.get("id"),
                    body.get("hId"),body.get("storeId"),notificationId);
            remoteMessage = null;
        }
        if(title.equals(getString(R.string.response_notification))){
            int notificationId = random.nextInt(100);
            NotificationHandler.displayNotificationEmployer(getApplicationContext(),title,body.get("sName"),
                    body.get("outcome"),notificationId);
        }
    }
}

Здесь я создаю свое уведомление с настраиваемым представлением;

   public static void displayNotificationEmployer(Context context, String title, String sName, String outcome, int notificationId) {
   notId = notificationId;
    RemoteViews customView = new RemoteViews(context.getPackageName(),R.layout.notification_employer_layout);
     customView.setTextViewText(R.id.title_response,title);
     customView.setTextViewText(R.id.notification_sname,sName);
     customView.setTextViewText(R.id.notification_response,outcome);
     customView.setTextViewText(R.id.timestamp_employer,DateUtils.formatDateTime(context, System.currentTimeMillis(), DateUtils.FORMAT_SHOW_TIME));

       Intent intent = new Intent(context,NotificationReciver.class);
       intent.putExtra("name", sName);
       intent.putExtra("outcome", outcome);
       intent.setAction("showmessage");
       PendingIntent pendingIntent = PendingIntent.getBroadcast(context,0,intent, PendingIntent.FLAG_UPDATE_CURRENT);

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context, MyApplication.PRIMARY_CHANNEL_ID)
            .setSmallIcon(R.drawable.i_notifiation)
            .setCustomContentView(customView)
            .setAutoCancel(true)
            .setContentIntent(pendingIntent);
           // .setStyle(new NotificationCompat.DecoratedCustomViewStyle());
    Log.i(TAG, "displayNotificationEmployer: notification id: " + notificationId);
    notificationManager.notify(notificationId,builder.build());
}

Я показываю вам мир фрагмента, где регистрируется уведомление

       String mail = prefConfig.readLoggedUser().getEmail();
    View view = inflater.inflate(R.layout.fragment_list_hiring, container, false);
    TextView listEmpty = view.findViewById(R.id.emptyState_hiring_list);
    RecyclerView recyclerView = view.findViewById(R.id.list_hires);
    mDBHelper.getHireByMail(mail, new DBHelper.DataStatus() {
        @Override
        public void dataIsLoaded(List<?> obj, List<String> keys) {
            double amount = 0.0;
            if(obj.isEmpty()) {
                listEmpty.setVisibility(View.VISIBLE);
            }else{
                List<HiringModel> hiringModelList = (List<HiringModel>)obj;
              amount =  setTotalAmount(hiringModelList);
                Collections.sort(hiringModelList);
                new RecyclerViewConfig(null).setConfigList(recyclerView, container.getContext(), obj,
                        keys, null);
                listEmpty.setVisibility(View.GONE);
            }
            mDBHelper.setTotalForUserId(prefConfig.readLoggedUser().getId(), amount);
        }
    });
 return view;
}

public double setTotalAmount(List<HiringModel> modelList){
    double totalAmount = 0.0;
    for (HiringModel model:modelList) {
        if(model.getAccepted() != null) {
            if (model.getAccepted().equals("accepted")) {
                totalAmount += model.getFee();
            }
        }
    }

Моя проблема возникла, когда я добавил метод, устанавливающий общую сумму, которая регистрирует общую сумму денег, заработанных пользователем, когда он принимает работу. Я отправляю еще одно уведомление работодателю в качестве ответа пользователя, и это работает правильно, поэтому я думаю, что проблема во фрагменте, но я не понимаю, что это такое, поэтому, пожалуйста, может кто-нибудь мне помочь?

...