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.
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é.
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");
}
}
if (this.getIntent().getExtras() != null && this.getIntent().getExtras().containsKey("yourKey")) {
// intent is not null and your key is not null
}
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";
}
Je voudrais utiliser cette solution dans votre cas.
String extraStr;
try {
extraStr = getIntent().getExtras().getString("extra");
} catch (NullPointerException e ) {
extraStr = "something_else";
}