无法通过 Intent 传递 Parcelable
Can't Pass Parcelable via Intent
我有两个活动:
- ListViewActivity
- 添加活动
和一个 object class :
- todoObj
我的 ListViewActivity activity 中有一个列表视图,当我单击添加按钮时,这将启动 AddActivity 。在 AddActivity 中,当用户输入标题时,选择日期、时间和类别,我希望 AddActivity 创建待办事项 object 并将其传递回 ListViewActivity。
抱歉,我无法共享代码本身,它总是出现此错误,所以我在 github 上上传了,请检查一下。
再次抱歉。
非常感谢。
您只需修复 ListViewActivity 中的 onActivityResult 方法:
因为您在 AddActivity“setResult(ListViewActivity.ADD_REQUEST_CODE, intent);”中设置结果代码 ADD_REQUEST_CODE,您应该使用ListViewActivity 中的“if (resultCode == ADD_REQUEST_CODE) {”不是 RESULT_OK.
您应该从 onActivityResult 接收 intent,而不是 ListViewActivity 的 intent。 getIntent() 给出 ListViewActivity 的意图。所以使用数据变量:
onActivityResult(int requestCode, int resultCode, Intent data)
最终代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ADD_REQUEST_CODE) {
if (resultCode == ADD_REQUEST_CODE) {
Log.i("ListViewActivity", "Returned onActivityResult");
TodoObj todoObj = (TodoObj) data.getParcelableExtra("EXTRA_TODO");
Toast.makeText(ListViewActivity.this, "" + todoObj.getmYear(),
Toast.LENGTH_SHORT).show();
}
}
}
我有两个活动:
- ListViewActivity
- 添加活动
和一个 object class :
- todoObj
我的 ListViewActivity activity 中有一个列表视图,当我单击添加按钮时,这将启动 AddActivity 。在 AddActivity 中,当用户输入标题时,选择日期、时间和类别,我希望 AddActivity 创建待办事项 object 并将其传递回 ListViewActivity。
抱歉,我无法共享代码本身,它总是出现此错误,所以我在 github 上上传了,请检查一下。
再次抱歉。 非常感谢。
您只需修复 ListViewActivity 中的 onActivityResult 方法:
因为您在 AddActivity“setResult(ListViewActivity.ADD_REQUEST_CODE, intent);”中设置结果代码 ADD_REQUEST_CODE,您应该使用ListViewActivity 中的“if (resultCode == ADD_REQUEST_CODE) {”不是 RESULT_OK.
您应该从 onActivityResult 接收 intent,而不是 ListViewActivity 的 intent。 getIntent() 给出 ListViewActivity 的意图。所以使用数据变量:
onActivityResult(int requestCode, int resultCode, Intent data)
最终代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == ADD_REQUEST_CODE) {
if (resultCode == ADD_REQUEST_CODE) {
Log.i("ListViewActivity", "Returned onActivityResult");
TodoObj todoObj = (TodoObj) data.getParcelableExtra("EXTRA_TODO");
Toast.makeText(ListViewActivity.this, "" + todoObj.getmYear(),
Toast.LENGTH_SHORT).show();
}
}
}