getIntExtra始终返回默认值

时间:2010-01-26 04:24:53

标签: android

我试图使用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的值。 有人能告诉我我做错了什么,或者我误解了 使用意图?

6 个答案:

答案 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);