Mein Aktivitäts-Signalr-Rückruf:
Code: Select all
@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)
);
}
Code: Select all
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));
}
}
Code: Select all
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;
}
}
Code: Select all
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);
}
}
Ich habe diese Methode auf ChatGPT gefunden und habe viele andere Möglichkeiten ausprobiert, aber kein Glück.
Wie kann ich meinen Signalr-Rückruf dazu bringen, eine Funktion aufzurufen und Daten an ein bestimmtes Fragment zu übergeben?
Wenn der Signalr Daten zurückgibt, möchte ich diese Daten sofort an das Fragment übergeben und diese Daten sofort zur Recyclingansicht hinzufügen.
Anstatt Fragmente zu verwenden, sollte ich etwa 11 Fragmente in meiner App haben, da Fragmente zerstört werden können>
Mobile version