How do I tell if Intent extras exist in Android?

前端 未结 5 657
你的背包
你的背包 2020-12-23 09:46

I have this code that checks for a value of an extra in an Intent on an Activity that is called from many places in my app:

getIntent().getExtras().getBoolea         


        
5条回答
  •  一生所求
    2020-12-23 09:51

    As others have said, both getIntent() and getExtras() may return null. Because of this, you don't want to chain the calls together, otherwise you might end up calling null.getBoolean("isNewItem"); which will throw a NullPointerException and cause your application to crash.

    Here's how I would accomplish this. I think it's formatted in the nicest way and is very easily understood by someone else who might be reading your code.

    // You can be pretty confident that the intent will not be null here.
    Intent intent = getIntent();
    
    // Get the extras (if there are any)
    Bundle extras = intent.getExtras();
    if (extras != null) {
        if (extras.containsKey("isNewItem")) {
            boolean isNew = extras.getBoolean("isNewItem", false);
    
            // TODO: Do something with the value of isNew.
        }
    }
    

    You don't actually need the call to containsKey("isNewItem") as getBoolean("isNewItem", false) will return false if the extra does not exist. You could condense the above to something like this:

    Bundle extras = getIntent().getExtras();
    if (extras != null) {
        boolean isNew = extras.getBoolean("isNewItem", false);
        if (isNew) {
            // Do something
        } else {
            // Do something else
        }
    }
    

    You can also use the Intent methods to access your extras directly. This is probably the cleanest way to do so:

    boolean isNew = getIntent().getBooleanExtra("isNewItem", false);
    

    Really any of the methods here are acceptable. Pick one that makes sense to you and do it that way.

提交回复
热议问题