我试图使用intent在活动之间传递一个整数。 源活动使调用info.id成为所选项目 一个ListView。
Intent intent = new Intent(myActivity.this, newClass.class);
intent.putExtra("selectedItem", info.id);
this.startActivity(intent);
目标活动使用getIntent检索intent,然后调用
int iSelectedItem = intent.getIntExtra("selectedItem", -1);
iSelectedItem始终为-1而不是传递给putExtra的值。 有人能告诉我我做错了什么,或者我误解了 使用意图?
答案 0 :(得分:20)
问题是info.id将是'long'并且不会转换为'int'。尝试
long iSelectedItem = intent.getLongExtra("selectedItem", -1)
答案 1 :(得分:12)
我找不到putIntExtra()
方法。所以我最终得到了以下内容:
intent.putExtra("jobId", 1);
和
Integer.parseInt(getIntent().getExtras().get("jobId").ToString());
使用try和catch来处理异常。
<强>更新强>
后来我发现我在putExtra()
方法中将jobId作为字符串传递,因此getIntExtra()
始终返回默认值。
所以@Grant是正确的。您必须在putExtra()
方法中传递整数值才能使用getIntExtra()
方法。
答案 2 :(得分:1)
我遇到了这个问题,这很简单。
检查你是否正在使用onActivityResult ...而不是你没有 要使用getIntent()来获取额外内容,您必须使用intent 你作为参数传递。
在你的情况下应该是这样的:
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(),而是使用参数intent。
(PS:如果您要调用很多期望结果的活动,最好检查意图是否为!= null)
我希望它有所帮助。
答案 3 :(得分: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获取额外内容一样,只是使用bundle.getInt,在这个例子中,getExtras返回一个bundle,因此,在这个bundle中,你可以获得你从resultIntent发送的任何数据
答案 4 :(得分:0)
就我而言,这是因为我用mId成员变量声明为string
创建了对象{{1}}
因此,Extra以字符串形式传递。只需将您的成员变量更改为int,即可获得想法;)
答案 5 :(得分: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);