检查是否设置了附加功能

jal*_*039 60 android bundle android-intent android-activity

有没有办法检查在启动活动时是否已经通过了额外的活动?

我想做一些像(在onCreate()活动中):

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

    if (extraStr == null) {
        extraStr = "extra not set";
    }
Run Code Online (Sandbox Code Playgroud)

但这是扔了一个java.lang.NullPointerException.

谢谢.

Mic*_*man 184

使用Intent.hasExtra(String name)来检查nameintent中是否传递了额外的with .

例:

Intent intent = getIntent();

if (intent.hasExtra("bookUrl")) {
    bookUrl = b.getString("bookUrl");
} else {
   // Do something else
}
Run Code Online (Sandbox Code Playgroud)

此外,Intent.getStringExtra(String name)直接使用意图处理NullPointerException如果没有额外的传递.


Júl*_*zar 13

好吧,我有类似的问题.在我的情况下,当我检查我的bundle.getString()是否等于 null时,发生了零点异常.

这是我的情况如何解决它:

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


sag*_*its 6

if (this.getIntent().getExtras() != null && this.getIntent().getExtras().containsKey("yourKey")) {
   // intent is not null and your key is not null
}
Run Code Online (Sandbox Code Playgroud)


小智 6

我认为你需要检查 extras != null

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


小智 5

我会在你的情况下使用这个解决方案。

String extraStr;
    try {
        extraStr = getIntent().getExtras().getString("extra");
    } catch (NullPointerException e ) {
        extraStr = "something_else";
    }
Run Code Online (Sandbox Code Playgroud)