web-dev-qa-db-fra.com

L'invocation de méthode peut produire un corps NullPointerException Retrofit

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

4
Priya

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.
}
7
Nabin Bhandari

Utilisez simplement cette vérification du pointeur null.

If(response != null && response.isSuccessfull())
{

// body

}
0
emilpmp

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();
     }
   }
0
Upendra Shah