如何知道Android中是否存在意图附加组件?

我有这样的代码,检查从我的应用程序中的许多地方调用的活动上的意图中额外的值:

getIntent().getExtras().getBoolean("isNewItem") 

如果isNewItem没有设置,我的代码会崩溃吗? 在我打电话之前,有没有办法确定是否设置了?

处理这个问题的正确方法是什么?

正如其他人所说, getIntent()getExtras()可能返回null。 正因为如此,你不想把这些调用链接在一起,否则你最终可能会调用null.getBoolean("isNewItem"); 这将抛出一个NullPointerException并导致您的应用程序崩溃。

这是我将如何完成这一点。 我认为它是以最好的方式格式化的,很容易被别人读懂。

 // 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. } } 

您实际上不需要调用hasExtra("isNewItem")因为getBoolean("isNewItem", false)将返回false,如果额外不存在。 你可以把上面的内容压缩成这样的东西:

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

您也可以使用Intent方法直接访问您的附加组件。 这可能是最干净的方式:

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

真的,这里的任何方法都是可以接受的。 选一个对你有意义的事情,这样做。

问题不是getBoolean()而是getIntent().getExtras()

这样testing:

 if(getIntent() != null && getIntent().getExtras() != null) myBoolean = getIntent().getExtras().getBoolean("isNewItem"); 

顺便说一下,如果isNewItem不存在,它会返回默认值false

问候。

你可以这样做:

 Intent intent = getIntent(); if(intent.hasExtra("isNewItem")) { intent.getExtras().getBoolean("isNewItem"); } 

getIntent()将返回null如果没有Intent所以使用…

 boolean isNewItem = false; Intent i = getIntent(); if (i != null) isNewItem = i.getBooleanExtra("isNewItem", false); 

它不会崩溃,除非你使用它! 如果它存在,则不必获取它,但如果由于某种原因而尝试使用不存在的“额外”,则系统将崩溃。

所以,请尝试做类似的事情:

 final Bundle bundle = getIntent().getExtras(); boolean myBool=false; if(bundle != null) { myBool = bundle.getBoolean("isNewItem"); } 

这样你确保你的应用程序不会崩溃。 (并确保你有一个有效的Intent :))

哟utilizo el siguiente sintaxtis:

  Bundle extras = getIntent().getExtras(); Logger.d("Verificamos variable enviadas"); if(extras != null){ Logger.d("Si hay exras"); String tempIdPaqueteP = extras.getString("adapterIdPaqueteP",null); if(tempIdPaqueteP != null){ // Si existe la variable adapterIdPaqueteP Logger.d("Si id:" + tempIdPaqueteP); }else { // Si no existe la variable adapterIdPaqueteP } }