web-dev-qa-db-fra.com

Vérifier si les extras sont définis ou non

Est-il possible de vérifier si un extra a été passé 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 jette un Java.lang.NullPointerException.

Merci.

58
jalv1039

Utilisez le Intent.hasExtra(String name) pour vérifier si un extra avec name a été passé dans l'intention.

Exemple:

Intent intent = getIntent();

if (intent.hasExtra("bookUrl")) {
    bookUrl = b.getString("bookUrl");
} else {
   // Do something else
}

Aussi, utilisez Intent.getStringExtra(String name) directement sur l'intention de gérer le NullPointerException si aucun extra n'a été passé.

181
Michal Kottman

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

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");
        }
    }
13
JúlioCézar
if (this.getIntent().getExtras() != null && this.getIntent().getExtras().containsKey("yourKey")) {
   // intent is not null and your key is not null
}
6
sagits

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

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

Je voudrais utiliser cette solution dans votre cas.

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