无法在onActivityResult上获取getIntExtra()

时间:2014-03-05 17:28:12

标签: android android-intent onresume onactivityresult

我遇到了通过Intent从一个活动向另一个活动发送和接收int类型的问题;

我发送的是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();

始终为空。

MP的日志工作正常。

-

希望你能在这里帮助我。

- 提前致谢, 参见Yaniv。

2 个答案:

答案 0 :(得分: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); 
}

更多信息: Cannot get Data from the intent - Android

答案 1 :(得分:1)

问题是您使用的是getIntent(),而不是data

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

应该是

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

请记住getIntent()返回用于创建调用Activity的意图,而不是您用于启动第二个活动的意图。