65 votes

Vérifiez si des extras sont définis ou non

Existe-t-il un moyen de vérifier si un extra a été transmis lors du démarrage d'une activité ?

Je voudrais faire quelque chose comme (sur le onCreate() dans l'activité) :

     Bundle extras = getIntent().getExtras();
    String extraStr = extras.getString("extra");

    if (extraStr == null) {
        extraStr = "extra not set";
    }

Mais cela lance un java.lang.NullPointerException .

Merci.

13voto

JúlioCézar Points 372

Eh bien, j'ai eu un problème similaire. dans mon cas, l'exception de point nul s'est produite lorsque j'ai vérifié si mon bundle.getString() était égal à nul.

voici comment dans mon cas je l'ai résolu:

 Intent intent = getIntent();        
    if(intent.hasExtra("nomeUsuario")){
        bd = getIntent().getExtras();
        if(!bd.getString("nomeUsuario").equals(null)){
            nomeUsuario = bd.getString("nomeUsuario");
        }
    }

7voto

sagits Points 188
if (this.getIntent().getExtras() != null && this.getIntent().getExtras().containsKey("yourKey")) {
   // intent is not null and your key is not null
}

6voto

tvtruong Points 99

Je pense que vous devez vérifier quand extras != null

 Bundle extras = getIntent().getExtras();
   if (extras != null) {
        String extraStr = extras.getString("extra");
    }else {
        extraStr = "extra not set";
    }

5voto

Exide Points 51

J'utiliserais cette solution dans votre cas.

 String extraStr;
    try {
        extraStr = getIntent().getExtras().getString("extra");
    } catch (NullPointerException e ) {
        extraStr = "something_else";
    }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X