无法通过Intent传递Parcelable

时间:2015-10-21 09:55:48

标签: java android android-intent parcelable pass-data

我有两项活动:

  • ListViewActivity
  • AddActivity

和一个对象类:

  • todoObj

我的ListViewActivity活动中有一个列表视图,当我点击添加按钮时,这将启动AddActivity。在AddActivity中,当用户输入Title时,选择日期,时间和我想要AddActivity的类别来创建待办事项对象并将其传递回ListViewActivity。

抱歉,我无法共享代码本身,它总是会一直提供此错误,所以我上传github请查看。

再次抱歉。 非常感谢。

1 个答案:

答案 0 :(得分:2)

您必须修复ListViewActivity中的 onActivityResult 方法:

  1. 由于您在AddActivity" setResult(ListViewActivity.ADD_REQUEST_CODE,intent); "中设置结果代码ADD_REQUEST_CODE,您应该使用" if(resultCode) == ADD_REQUEST_CODE){"在ListViewActivity中不是 RESULT_OK
  2. 您应该从onActivityResult获得意图而不是ListViewActivity的意图。 getIntent()给出ListViewActivity的意图。所以使用数据变量:

    onActivityResult(int requestCode,int resultCode,Intent data

  3. 最终代码:

    @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();
            }
        }
    }