Проверьте, установлены ли дополнительные функции или нет - PullRequest
58 голосов
/ 24 ноября 2011

Есть ли способ проверить, было ли передано дополнительное при запуске действия?

Я хотел бы сделать что-то вроде (на onCreate() в Деятельности):

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

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

Но это бросает java.lang.NullPointerException.

Спасибо.

Ответы [ 5 ]

178 голосов
/ 24 ноября 2011

Используйте Intent.hasExtra(String name), чтобы проверить, было ли в намерении передано дополнительное значение с name.

Пример:

Intent intent = getIntent();

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

Также используйте Intent.getStringExtra(String name) непосредственно на намерение обработать NullPointerException, если не было передано никаких дополнений.

13 голосов
/ 31 марта 2015

Ну, у меня была похожая проблема.в моем случае исключение нулевой точки происходило, когда я проверял, равен ли мой bundle.getString () нулю.

вот как в моем случае я решил это:1006 *

Intent intent = getIntent();        
    if(intent.hasExtra("nomeUsuario")){
        bd = getIntent().getExtras();
        if(!bd.getString("nomeUsuario").equals(null)){
            nomeUsuario = bd.getString("nomeUsuario");
        }
    }
5 голосов
/ 22 января 2015
if (this.getIntent().getExtras() != null && this.getIntent().getExtras().containsKey("yourKey")) {
   // intent is not null and your key is not null
}
4 голосов
/ 19 августа 2016

Я думаю, вам нужно проверить, когда статисты! = Ноль

Bundle extras = getIntent().getExtras();
   if (extras != null) {
        String extraStr = extras.getString("extra");
    }else {
        extraStr = "extra not set";
    }
4 голосов
/ 11 февраля 2016

Я бы использовал это решение в вашем случае.

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