J'utilise Retrofit 2 pour obtenir une réponse de mon API et stocker sa valeur dans ma constante, comme ci-dessous.
if(response.isSuccessful()) {
constant.banner_on = response.body().getBanner_on();
constant.int_on = response.body().getInt_on();
constant.int_click = response.body().getInt_click();
}
sa me donnant l'avertissement sur tous les trois comme ci-dessous
Method invocation getBanner_on may produce Java.lang.nullPointerException
Je suis confus et incapable de résoudre cet avertissement. Faites-moi savoir si quelqu'un peut m'aider à sortir de ça.
Merci
C'est juste un avertissement, car il ne sera jamais nul si la réponse est réussie. Vous pouvez l'ignorer ou entourer if(response.body() != null)
pour supprimer l'avertissement.
Ads ads = response.body();
if(ads != null){
constant.banner_on = ads.getBanner_on();
// and so on.
}
Utilisez simplement cette vérification du pointeur null
.
If(response != null && response.isSuccessfull())
{
// body
}
C’est une bonne habitude d’attribuer une valeur quelconque à null pointer exception
avant d’attribuer une valeur à l’exception. Et vous pouvez également utiliser try
et catch
pour gérer d'autres exceptions.
if(response.isSuccessful()) {
try {
if(response.body() != null){
constant.banner_on = response.body().getBanner_on();
constant.int_on = response.body().getInt_on();
constant.int_click = response.body().getInt_click();
}
} catch (IOException e) {
e.printStackTrace();
}
}