java - 无法通过 Intent 传递 Parcelable

标签 java android android-intent parcelable pass-data

我有两项 Activity :

  • ListViewActivity
  • 添加 Activity

和一个对象类:

  • todoObj

我的 ListViewActivity Activity 中有一个 ListView ,当我单击添加按钮时,这将启动 AddActivity 。在 AddActivity 中,当用户输入标题时,选择日期、时间和类别,我希望 AddActivity 创建一个待办事项对象并将其传递回 ListViewActivity。

抱歉,我无法分享代码本身,它总是出现此错误,所以我上传到 github请检查一下。

再次抱歉。 非常感谢。

最佳答案

您需要修复ListViewActivity中的onActivityResult方法:

  1. 由于您在 AddActivity“setResult(ListViewActivity.ADD_REQUEST_CODE, Intent);”中设置了结果代码 ADD_REQUEST_CODE,因此您应该使用“if (resultCode == ADD_REQUEST_CODE) {”在 ListViewActivity 中不是 RESULT_OK

  2. 您应该从 onActivityResult 接收 Intent ,而不是 ListViewActivity 的 Intent 。 getIntent() 给出 ListViewActivity 的 Intent 。因此使用数据变量:

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

关于java - 无法通过 Intent 传递 Parcelable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33256185/

相关文章:

java - DAO 方法应该调用同一类中的另一个方法还是应该由服务层执行?

java - 使用 java.time 根据时区转换时间

java - ImageJ API : how to get access to a straight line selection object in the java code?

android - 如何使用 Ionic 3 拍摄图像或录制视频

android - 无法解决:Gotev Android UploadService

Android WebView 未加载 URL

java - 如何使方法的泛型返回类型依赖于参数类型?

android - 我如何实现服务

android - 无法在 onActivityResult 处 getIntExtra()

android - IntentChooser - 不同应用程序的不同 Intent