java - 如何在 Intent 中传递 Parcelable?

标签 java android android-intent null

我在接收来自其他 Activity 的 Intent 中的额外内容时遇到问题。当我运行代码并在实际创建对象的行使用断点时,我可以看到它是使用调试器创建的。我可以看到该对象被放入 putExtra() 函数中。

在到达结果 Activity 时,尽管使用函数 getParceableExtra() 在收到 Intent 时始终返回 null。

//接收 Activity 中

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data){
    if(requestCode == 1){
        if(resultCode == Activity.RESULT_OK){
            Intent extras = getIntent();
            if(extras != null){
                Goals addToList = extras.getParcelableExtra(GOAL_PASSING);
                if(addToList != null)
                    mGoal.add(addToList);
            }
        }
    }
}

//发送 Activity 中

    incrementMGoal = (findViewById(R.id.create_goal_button));
    incrementMGoal.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Intent returnIntent = new Intent();
            Goals newGoal = new Goals(GT,GD,GDueDate);
            returnIntent.putExtra(MainActivity.GOAL_PASSING,newGoal);
            setResult(Activity.RESULT_OK,returnIntent);
            finish();
        }
    });

我希望当我创建 Intent 时传递 putExtra ,然后接收它并将其放入数组中。然而我只是收到 null。

最佳答案

问题是您的代码采用了错误的 Intent ,而不是 onActivityResult 参数 data

Goals addToList = data.getParcelableExtra(GOAL_PASSING);

所以你应该这样做

Goals addToList = data.getParcelableExtra(GOAL_PASSING);

关于java - 如何在 Intent 中传递 Parcelable?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55977538/

相关文章:

java - 使用等待和通知终止生产者消费者设置

c# - 用于 Web 浏览器控制的 Windows C# 应用程序

android - WebView 未加载网页

android - 与电话号码联系的 Intent

android - 使用 Robolectric 测试带有 intent extras 的服务的启动?

java - 是否有 Java 8 等同于内置的 Python enumerate?

java - 线程 "main"java.lang.NoClassDefFoundError :Helloworld<wrong mname:Helloworld> 中出现此异常的原因是什么

javascript - 我可以将 Youtube 视频内联嵌入到 Android 设备吗?

android - 如何在 Android 中制作自定义 ANR 对话框而不是 android ANR 对话框

android - 在 TabActivity 中将 Intent 设置为后退键