android返回活动额外返回null
问题描述:
当试图将数据从一个活动传递到另一个活动时,它在一个方向上正常工作父>>子。但返回路径的孩子>>父母崩溃我认为与空指针异常。 现在我可以很容易地捕获null,但无法确定我传递的int在哪里丢失?android返回活动额外返回null
你如何进行调试这种类型的问题 - 任何见解等等
行发生崩溃: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;
}
}
答
我曾在过去的这个问题,不得不做一些像下面的代码示例:
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();
}
};
答
看看你onActivityResult(...)
参数...
protected void onActivityResult(int requestCode, int resultCode, Intent data)
当已从startActivityForResult
开始的活动返回,返回的Intent
是参数data
。
在你的“父母”活动使用的是其getIntent()
方法,该方法返回Intent
(如有的话)最初开始的活动。
而不是...
Bundle extras = getIntent().getExtras();
...你应该使用...
Bundle extras = data.getExtras();
优秀,感谢你的洞察。更改为data.getExtras()解决了它。 – Fry