android返回活动extras返回null

时间:2011-08-28 22:56:28

标签: android

当尝试将数据从一个活动传递到另一个活动时,它可以在一个方向上运行父>> child。但是返回路径子>>父崩溃我认为是空指针异常。 现在我可以很容易地捕获null,但是无法弄清楚我传递的int在哪里迷路了?

如何调试此类问题 - 任何洞察力等......

行发生崩溃:int binVal = extras.getInt(“binVal”);

// when leaving the child activity
OnClickListener mReturnListener = new OnClickListener() {
    public void onClick(View v) {
        Intent intent = getIntent();
        intent.putExtra("binVal", (int)binVal);
        setResult(Activity.RESULT_OK, intent);
        finish();
    }
};  



//on return to the parent actvity
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    switch (requestCode) { 
    case SET_BIN_TEMP:
        if (resultCode == RESULT_OK) {           
            Bundle extras = getIntent().getExtras();
            if (extras == null)
                Toast.makeText(PilotActivity.this, "null returned!", Toast.LENGTH_SHORT).show();
            else {
                 int binVal = extras.getInt("binVal");
                 text.setText(Integer.toString(binVal));
             }
        }
        return;
    }
}

2 个答案:

答案 0 :(得分:3)

查看您的onActivityResult(...)参数...

protected void onActivityResult(int requestCode, int resultCode, Intent data)

当以startActivityForResult开头的活动返回时,返回的Intent是参数data

在“父级”活动中,您使用的是getIntent()方法,该方法会返回最初启动活动的Intent(如果有)。

而不是......

Bundle extras = getIntent().getExtras();

......你应该使用......

Bundle extras = data.getExtras();

答案 1 :(得分:0)

我过去遇到过这个问题,不得不做类似下面的代码示例:

OnClickListener mReturnListener = new OnClickListener() {
    public void onClick(View v) {
        Intent intent = getIntent();
        intent.putExtra("binVal", (int)binVal);

        if (getParent() == null)
            YourActivity.this.setResult(Activity.RESULT_OK, intent);
        else
            YourActivity.this.getParent().setResult(Activity.RESULT_OK, intent);

        finish();
    }
};