当尝试将数据从一个活动传递到另一个活动时,它可以在一个方向上运行父>> 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;
}
}
答案 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();
}
};