2015-05-05 3 views
-1

Мне нужно передать строку из одной операции в другую.android: намерение передается null

в Activiy1 я сделал:

String modello=nomiImmagini[position]; 
Intent nomeModello = new Intent(getApplicationContext(), Activity2.class); 
nomeModello.putExtra("modello", modello); 

где значение массива nomiImmagini [положения] не равно нулю, если я сделал тост как

Toast.makeText(getApplicationContext(), 
       "Selezionato " + nomiImmagini[position], Toast.LENGTH_SHORT).show(); 

он работает правильно.

в деятельности2 я сделал:

String modello = getIntent().getStringExtra("modello"); 

но здесь результат нулевой!

Как это исправить? Я новичок в Android и, возможно, я не понимаю намерения.

+4

вы используете 'nomeModello', чтобы начать 'Activity2'? – Blackbelt

+3

Кроме того, где в 'Activity2' есть' String modello = getIntent(). GetStringExtra («modello»); '? – codeMagic

ответ

0

Вам необходимо пройти в намерениях, когда вы запускаете деятельности2:

Activity1.this.startActivity(nomeModello); 

Тогда в OnCreate вашего Acitivty2:

String modello = getIntent().getExtras().getString("modello"); 
0

Вы можете иметь LaunchMode для деятельности2: SingleInstance в манифесте:

<activity 
     ... 
    android:launchMode="singleInstance" 
     ... 
> 

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

nomeModello.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 

так что ваш код будет:

String modello=nomiImmagini[position]; 
Intent nomeModello = new Intent(getApplicationContext(), Activity2.class); 
nomeModello.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
nomeModello.putExtra("modello", modello); 

и, как упоминалось Blackbelt, вы должны вызвать деятельности2 этого намерения nomeModell так что это будет примерно так: startActivity (nomeModello);

+1

Я бы не рекомендовал уже запутанному пользователю добавлять вещи, которые могут не понадобиться, и может привести к нежелательным результатам. – codeMagic

0

В первой активности и нужно это:

startActivity(nomeModello);

и второй, где и получить данные, если то не работает, попробуйте следующее:

Bundle extras = getIntent().getExtras(); 

    if (extras != null) 
     String modello = extras.getString("modello");