Android: NullPointerException при использовании дополнений в Intents

Пожалуйста, я получаю исключение NullPoiterException, когда я пытаюсь получить дополнительные данные из намерения. Ошибка выдается именно при звонке

int posizione2 =Integer.parseInt((getIntent().getExtras().getString(Intent.EXTRA_TEXT)));

Любая помощь очень ценится!

private void aggiungiImm(View arg1, int arg2) {
    Intent i=newintent(Intent.ACTION_PICK,ContactsContract.Contacts.CONTENT_URI);
    i.putExtra(Intent.EXTRA_TEXT, Integer.toString(arg2));
    startActivityForResult(i, PICK_REQUEST);    
}    

@Override
protected void onActivityResult(int requestCode, int resultCode,Intent data) {
    Uri contactData=null;
    if (requestCode==PICK_REQUEST) {
    if (resultCode==RESULT_OK) {
    contactData=data.getData();                     
    int posizione2 =Integer.parseInt((getIntent().getExtras().getString(Intent.EXTRA_TEXT)));

Отредактировано: пока нет решения. Может ли быть так, что проблема связана с тем, что это неявное намерение?

2 ответа

Решение

Вместо

int posizione2 =Integer.parseInt((getIntent().getExtras().getString(Intent.EXTRA_TEXT)));

Попробуй это:

Bundle extras = getIntent().getExtras();
if (extras==null) {
  Log.e( "", "No extras provided" );
  return;
}

String myText = extras.getString(Intent.EXTRA_TEXT);
if (myText==null) {
  Log.e( "", "No text provided" );
  return;
}

int posizione2 = Integer.parseInt(myText);

Должно помочь вам увидеть, что дает исключение...

Кстати, ваш возвращенный текст (если этот текст поступает в результате других действий) будет доступен в намерении, переданном функции. Так что вы должны делать:

if (data.getString(Intent.EXTRA_TEXT)==null) {
  Log.e( "", "No text provided" );
  return;
}

int posizione2 = Integer.parseInt(data.getString(Intent.EXTRA_TEXT));

getIntent() Метод даст вам намерение, с которого была запущена вызывающая деятельность. Нет намерения удерживать результат вызванной деятельности.

Если вы получаете No text provided сообщение, это означает, что вы не вернули должным образом результат в операции, которая его вычисляет.

Попробуй использовать data.getStringExtra(Intent.EXTRA_TEXT)

Другие вопросы по тегам