2012-04-08 1 views
1

Я работаю над приложением, и из представления списка создаю пакет, включающий выбранный элемент и предыдущий элемент. То, что мне нужно определить, - это если предыдущий элемент действительно попадает в комплект. Если он существует, я хочу эту информацию, но если она не существует, то мне нужно настроить мои текстовые представления, чтобы это отразить. Но я получаю исключение с нулевым указателем, если оно не существует при попытке загрузить принимающую операцию (активность связывания не вызывает аварии, как я обнаружил во время отладки - я добираюсь до точки, где я тестирую данные в перед сбоем). Поэтому я включил код из принимающей активности.Проверка наличия части пакета в Android

Bundle evmBundle = this.getIntent().getExtras(); 
    final EVMData evm = (EVMData) evmBundle.getSerializable("evm"); 

    final Project project = (Project) evmBundle.getSerializable("project"); 

      if (!evmBundle.getSerializable("prvEVM").equals(null)){ 
     final EVMData prvEvm = (EVMData) evmBundle.getSerializable("prvEVM"); 
     edtPrvAC = (TextView) findViewById(R.id.edtPrvEVMAC); 
     edtPrvAC.setText(prvEvm.getAc().toString()); 
    } 
    else{ 
     edtPrvAC = (TextView) findViewById(R.id.edtPrvEVMAC); 
     edtPrvAC.setText("0"); 
    } 

Я знаю, что-то становится проходит через в пачке для «prvEVM», потому что он показал, как часть пучка в отладчике.

Я также попытался сначала вытащить его из комплекта, а затем попытаться сравнить его. После извлечения его из пучка, prvEvm равно нулю (смотрит на переменных в отладчике), так что я думал, что что-то подобное может работать:

 if (!prvEvm.equals(null)){ 
     edtPrvAC = (TextView) findViewById(R.id.edtPrvEVMAC); 
     edtPrvAC.setText(prvEvm.getAc().toString()); 
    }else{ 
     edtPrvAC = (TextView) findViewById(R.id.edtPrvEVMAC); 
     edtPrvAC.setText("0"); 
    } 

Но я получаю NullPointerException, потому что prvEvm является Null. Поэтому я попытался перевернуть тест if, но получил те же результаты. Я должен отметить, что независимо от того, как я это установил, если prvEvm не является нулевым, все конфигурации здесь работают - запрошенные данные помещаются в TextView. В принципе, мне нужно иметь возможность обойти это исключение нулевого указателя. Я знаю, что объект имеет значение null, я хочу проверить его, чтобы, если он есть, этот объект не используется. Он будет только один раз.

ответ

3

Не используйте equals(null), поскольку вы вызываете метод (равный) на нулевом объекте. Вместо этого, по сравнению с нулем:

if (prvEvm != null){ 

кроме того, equals(null) всегда возвращает ложь.

+0

Иногда я просто чувствую себя очень глупо, когда ответ такой легкий. Спасибо! Сохраняет мне чтение базы данных (которое я только что закончил код и проверил, когда увидел это). Я ценю вашу помощь! –

 Смежные вопросы

  • Нет связанных вопросов^_^