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
сообщение, это означает, что вы не вернули должным образом результат в операции, которая его вычисляет.