Мой обратный вызов signalr:
Код: Выделить всё
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
vm = new ViewModelProvider(this).get(InteractionsFragmentViewModel.class);
}
@Override
public void sendConnectSentClient(User jsonUser, String dateCreated, String sessionUserGuid, String userImages) {
vm.postEvent(
new InteractionEvent.SendConnectSentClient(jsonUser, dateCreated, sessionUserGuid, userImages)
);
}
Код: Выделить всё
public class InteractionsFragmentViewModel extends ViewModel {
private final MutableLiveData events =
new MutableLiveData();
public LiveData getEvents() {
return events;
}
public void postEvent(InteractionEvent event) {
events.postValue(new Event(event));
}
}
Код: Выделить всё
public class Event extends MutableLiveData {
private final T content;
private boolean handled = false;
public Event(T content) {
this.content = content;
}
public T getContentIfNotHandled() {
if (handled) return null;
handled = true;
return content;
}
}
Код: Выделить всё
InteractionsFragmentViewModel vm = new ViewModelProvider(requireActivity())
.get(InteractionsFragmentViewModel.class);
vm.getEvents().observe(getViewLifecycleOwner(), event -> {
InteractionEvent e = event.getContentIfNotHandled();
if (e == null) return;
handleEvent(e);
});
private void handleEvent(InteractionEvent event) {
if (event instanceof InteractionEvent.SendConnectSentClient) {
InteractionEvent.SendConnectSentClient e = (InteractionEvent.SendConnectSentClient) event;
sendConnectsSentNotifications(e.user, e.dateCreated, e.userImages);
} else if (event instanceof InteractionEvent.SendConnectSentCancelClient1) {
InteractionEvent.SendConnectSentCancelClient1 e = (InteractionEvent.SendConnectSentCancelClient1) event;
sendConnectSentDeletedNotifications(e.userGuid);
} else if (event instanceof InteractionEvent.SendConnectSentCancelClient2) {
InteractionEvent.SendConnectSentCancelClient2 e = (InteractionEvent.SendConnectSentCancelClient2) event;
sendConnectSentDeletedNotifications(e.userGuid);
} else if (event instanceof InteractionEvent.SendConnectSentAcceptClient) {
InteractionEvent.SendConnectSentAcceptClient e = (InteractionEvent.SendConnectSentAcceptClient) event;
sendConnectSentDeletedNotifications(e.userGuid);
} else if (event instanceof InteractionEvent.SendConnectedSentCancelClient) {
InteractionEvent.SendConnectedSentCancelClient e = (InteractionEvent.SendConnectedSentCancelClient) event;
sendConnectSentDeletedNotifications(e.userGuid);
}
}
Я нашел этот метод в ChatGPT и попробовал много других способов, но безуспешно.
Как я могу заставить свой обратный вызов signalr вызвать функцию и передать данные в определенный фрагмент?
/>Я пытаюсь сделать следующее: когда сигнализатор возвращает данные, я хочу передать эти данные во фрагмент и мгновенно добавить эти данные в recycleview.
Подробнее здесь: https://stackoverflow.com/questions/798 ... ction-from
Мобильная версия