问题是info.id将是’long’并且不会转换为’int’。 尝试
long iSelectedItem = intent.getLongExtra("selectedItem", -1)
我没有findputIntExtra()方法。 所以我最终得到了以下内容:
intent.putExtra("jobId", 1);
和
Integer.parseInt(getIntent().getExtras().get("jobId").ToString());
使用try和catch来处理exception。
UPDATE
后来我发现我在putExtra()方法putExtra() jobId作为字符串传递,因此getIntExtra()始终返回默认值。
所以@Grant是正确的。 您必须在putExtra()方法中传递Integer值才能使用getIntExtra()方法。
我遇到了这个问题,这很简单。
检查你是否使用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)
我希望它有所帮助。
简单:
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返回一个包,因此,在此包中,您可以获取从resultIntent发送的任何数据。
在我的例子中,这是因为我使用声明为string的mId成员variables创建了对象
public class Application { private String mId; .... } intent.putExtra("id", myApplication.getId());
因此,Extra以字符串forms传递。 只需将您的成员variables更改为int,您就会明白;)
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);