web-dev-qa-db-ja.com

エキストラが設定されているかどうかを確認します

アクティビティを開始するときに追加が渡されたかどうかを確認する方法はありますか?

私は(アクティビティのonCreate()で)次のようなことをしたいと思います:

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

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

しかし、これはJava.lang.NullPointerException

ありがとうございました。

58
jalv1039

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を処理します。

181
Michal Kottman

よく似た問題がありました。私の場合、bundle.getString()がnullに等しいかどうかをチェックすると、nullポイント例外が発生しました。

これが私の場合の解決方法です:

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

エクストラ!= nullの場合はチェックする必要があると思います

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

私はあなたの場合にこのソリューションを使用します。

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