2010-01-26 80 views
15

我想在使用intent的活动之间传递一个整数。 源活动使得调用info.id是来自 ListView的选定项目。getIntExtra总是返回默认值

Intent intent = new Intent(myActivity.this, newClass.class); 
intent.putExtra("selectedItem", info.id); 
this.startActivity(intent); 

目标活动检索使用getIntent然后调用

int iSelectedItem = intent.getIntExtra("selectedItem", -1); 

意图iSelectedItem始终是-1,而不是传递给putExtra值。 有人可以告诉我我做错了什么,或者我误解了 使用intent?

回答

18

问题是,info.id将是一个'长',而不是转换为'int'。尝试

long iSelectedItem = intent.getLongExtra("selectedItem", -1) 
+0

是的,这对我而言效果很好。 – EtienneSky 2011-09-15 06:10:41

12

我没有找到putIntExtra()的方法。所以我结束了以下内容:

intent.putExtra("jobId", 1); 

​​

使用try和catch来处理异常。

UPDATE

后来我发现,我是路过的jobId作为字符串在putExtra()方法,因此getIntExtra()总是返回默认值。

所以@Grant是正确的。你必须通过一个整数值在putExtra()方法使用getIntExtra()方法。

+0

woohoo ..荣誉。 – Sayka 2016-05-05 00:21:55

1

我有这个问题,这是一件简单的事情。

检查如果你使用onActivityResult ......不是,您不必 使用getIntent()来获得的额外内容,你必须使用你传递作为参数的意图 。

在你的情况应该是这样的:

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
    if (resultCode == RESULT_OK) { 
     int iSelectedItem = intent.getIntExtra("selectedItem", -1);    
     Log.d("DEBUG", "check iSelectedItem = " + iSelectedItem); 
    } 
} 

看到,我没有使用getIntent(),但参数的意图。

(PS:如果你调用了很多的期望结果的活动,是更好地检查目的是= NULL)

我希望它能帮助。

1

简单:

Bundle bundle = getIntent().getExtras(); 
int iSelectedItem = bundle.getInt("selectedItem", -1); 

现在,如果你使用StartActivityForResult并且要返回一些数据,从孩子的活动,提醒你必须使用onActivityResult

public void onActivityResult(int requestCode, int resultCode, Intent intent) { 
if (resultCode == RESULT_OK) { 
    int iSelectedItem = intent.getExtras.getInt("selectedItem", -1);    
    Log.d("DEBUG", "check iSelectedItem = " + iSelectedItem); 
    } 
} 

记住,就像你从其他Activity获得临时演员一样,只是使用包。getInt,在这个例子中,getExtras返回一个包,所以,在这个包中,你可以获得你从resultIntent发送的任何数据。

0

在我的情况,那是因为我创造了MID的成员变量的对象声明为字符串

public class Application { 

private String mId; 
.... 
} 

intent.putExtra("id", myApplication.getId()); 

,因此,额外的作为字符串传递。只需将您的成员变量更改为int,即可获得主意;)

0
int sub_menu_id = 0; 
    int question_part = 0; 

    if (savedInstanceState == null) { 
     Bundle extras = getIntent().getExtras(); 
     if (extras == null) { 
      sub_menu_id = -1; 
      question_part = -1; 
     } else { 
      sub_menu_id = extras.getInt("sub_menu_id"); 
      question_part = extras.getInt("question_part"); 
     } 
    } 

    Log.d("DREG", "sub_menu_id: " + sub_menu_id + "\nquestion_part: " + question_part);