2015-01-26 3 views
0

Я работаю над получением посылочных объектов в MainActiviy. Я пробовал использоватьКак проверить, является ли Parcelable NULL

if((Task)getIntent().getExtras().getParcelable(Create.TASK_KEY) != null) 

проверить, прежде чем пытаться получить возможность. К сожалению, это приводит к сбою приложения с исключением null-указателя. Как я могу проверить, чтобы убедиться, что доступен доступный пакет, прежде чем пытаться его получить?

+1

Если это сбой с помощью NPE, это означает, что 'getIntent()' или 'getExtras()' возвращает 'null'. – kcoppock

ответ

4

вы можете использовать

if (getIntent().hasExtra(Create.TASK_KEY)) { 

    } 

он возвращает истину, только если внутреннее расслоение не является нулевым, и у вас есть объект с ключом, снабженным в качестве параметра

как правильно указал, из @kcoppock вы можете также поместите нулевой объект в пакет.

Task task = null; 
    if ((task = getIntent().getParcelableExtra(Create.TASK_KEY)) != null) { 
    // do something with task 
    } 
+0

Хотя это технически не гарантирует, что значение не является нулевым, например, если в Intent было заполнено: 'intent.putExtra (Create.TASK_KEY, null);'. – kcoppock

+0

вы не можете поставить null extra, поскольку он создает неоднозначность с методами putExtra. – giorashc

+0

@kcoppock благодарит вас за указание. Я не знал, что можно поместить нулевой объект. Я отредактировал свой ответ. Есть предположения ? – Blackbelt

2

Я думаю, что getExtras возвращает значение null, поэтому ваш код приводит к ошибке NullPointerException. Попробуйте также проверить дополнительные значения для нулевого значения:

Bundle extras = getIntent().getExtras(); 
if(extras != null && extras.getParcelable(Create.TASK_KEY) != null) { 
    ... 
} 
Смежные вопросы