Je suis en train d'utiliser une Roomdatabase et je souhaite chercher un seul objet dans la base de données lorsque je lui donne son nom. Pour cela, j'ai écrit cette requête dans le DAO :
@Query("SELECT * FROM kuh_table WHERE name = :kuhName ")
Kuh findKuh(String kuhName);
Je l'appelle dans le référentiel de cette manière :
public Kuh findKuh(String kuhName){
final Kuh[] kuh = new Kuh[1];
new Thread(new Runnable() {
volatile boolean running = true;
@Override
public void run() {
if(running!= true) {
return;
}
kuh[0] =kuhDAO.findKuh(kuhName);
running = false;
}
}).start();
return kuh[0];
}
ensuite dans mon ViewModel de cette manière :
public Kuh findKuh(String kuhName){ return repository.findKuh(kuhName);}
Ensuite, j'initialise mon ViewModel dans un fragment et j'essaie d'utiliser la méthode en donnant une chaîne de caractères comme ceci :
MarkerApiKt.setMarkerTapListener(mapView, (MarkerTapListener) (new MarkerTapListener() {
public void onMarkerTap(@NotNull View view, int x, int y) {
Intrinsics.checkNotNullParameter(view, "view");
if (view instanceof MapMarker) {
MarkerCallout callout = new MarkerCallout(context);
callout.setTitle(((MapMarker) view).getName());
callout.setSubTitle("position: " + ((MapMarker) view).getX() + " , " + ((MapMarker) view).getY());
Kuh kuh = kuhViewModel.findKuh(((MapMarker) view).getName());
Toast.makeText(context, "this is "+ kuh.getName(), Toast.LENGTH_SHORT).show();
mais d'une manière ou d'une autre, l'instance de mon objet est toujours nulle car je me retrouve avec une exception de pointeur nul. Avez-vous une idée de ce que je pourrais faire de travers ?