Не удается получитьIntExtra() в onActivityResult

У меня возникла проблема с отправкой и получением типов int из одного действия в другое через Intent;

Я отправляю его с помощью функции onActivityResult(), которая помещается в принимающую активность.

Код:

Отправка:

Intent ba=new Intent();
        
MyPoints = fgv.getPoints();

int MP=(int)MyPoints;
Log.i("Problem","MyPoints MP = "+MP);

ba.putExtra("FocusScore",MP);
Log.i("Problem","MyPoints = "+MP);

setResult(RESULT_OK,ba);
finish();

Приемная деятельность:

//В onClick для перемещения другого класса

Intent goFocus = new Intent(Games.this,FocusGame.class);

startActivityForResult(goFocus,1);

//В функции onActivityResult

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        // TODO Auto-generated method stub
        super.onActivityResult(requestCode, resultCode, data);
        
        if(resultCode==RESULT_OK)
        {   
            
          switch (requestCode) {
            
             case 1: {
             //Coming back from Focus-Game
             //Problem:!!
                
              int sss= getIntent().getIntExtra("FocusScore", -1); 
              Log.i("Problem","sss = "+sss);
            
                 }
             break;
            
             default :
             break;
            
            }

}

В результате кода выдается лог, где sss=-1. Который означает, что

getIntent().getIntExtra();

всегда равно нулю.

И Лог МП работает нормально.

-

Надеюсь, вы могли бы помочь мне здесь.

- Заранее спасибо, Янив.


person YanivGK    schedule 05.03.2014    source источник
comment
Что делает этот журнал Log.i("Problem","MyPoints MP = "+MP);?   -  person Raghunandan    schedule 05.03.2014
comment
Он показывает сообщение в LogCat с тегом Проблема.   -  person YanivGK    schedule 05.03.2014
comment
возможный дубликат Не удается получить данные из намерения - Android   -  person codeMagic    schedule 05.03.2014
comment
@YanivGK значение MP?   -  person Raghunandan    schedule 05.03.2014


Ответы (2)


Используйте значение data, а не getIntent()

if (data != null) {
    //int sss= getIntent().getIntExtra("FocusScore", -1); 
    Bundle extras = data.getExtras();
    int sss =  extras.getInt("FocusScore");
}

или просто

if (data != null) {
    //int sss= getIntent().getIntExtra("FocusScore", -1);     
    int sss= data.getIntExtra("FocusScore", -1); 
}

Дополнительная информация: Не удается получить данные из намерения - Android

person Jorgesys    schedule 05.03.2014
comment
Да.. забыл. Спасибо - person YanivGK; 05.03.2014

Проблема в том, что вы используете getIntent() вместо data

int sss= getIntent().getIntExtra("FocusScore", -1); 

должно быть

int sss= data.getIntExtra("FocusScore", -1); 

Помните, что getIntent() возвращает намерение, которое использовалось для создания вызывающего действия, а не намерение, которое ВЫ использовали для запуска второго действия.

person Merlevede    schedule 05.03.2014
comment
@YanivGK Я вижу, вы приняли чужой ответ. Мой вопрос: вы действительно использовали Bundle extras = data.getExtras();?? Потому что это не должно работать, так как вы не передали bundle как Extra. - person Merlevede; 05.03.2014
comment
Я думал так же, как и вы. Однако другой код действительно работал. - person YanivGK; 05.03.2014
comment
Вам не нужно передавать Bundle для инициализации Bundle из Intent extras. Это упрощает переход к другим Activities, но этот способ работает. - person codeMagic; 05.03.2014