【问题标题】:Can not getIntExtra() at onActivityResult无法在 onActivityResult 获取 IntExtra()
【发布时间】:2014-04-07 22:20:40
【问题描述】:

我在通过 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 的日志工作正常。

-

希望你能在这里帮助我。

- 提前致谢, 亚尼夫。

【问题讨论】:

  • 这个日志Log.i("Problem","MyPoints MP = "+MP);是什么?
  • 它在 LogCat 上显示一条消息,标签为“问题”。
  • @YanivGK MP 的值?

标签: android android-intent onresume onactivityresult


【解决方案1】:

使用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

【讨论】:

  • 是的……我忘了。谢谢
【解决方案2】:

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

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

应该是

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

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

【讨论】:

  • @YanivGK 我看到你接受了其他人的回答。我的问题是你真的使用Bundle extras = data.getExtras();??因为它不应该工作,因为您没有将 bundle 作为 Extra 传递。
  • 我虽然和你一样。然而,其他代码确实有效。
  • 您不必传递Bundle 来从Intent extras 初始化Bundle。它使传递给不同的Activities 变得更容易,但这种方式很有效。
猜你喜欢
  • 1970-01-01
  • 2012-12-02
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-30
  • 1970-01-01
相关资源
最近更新 更多