gpt4 book ai didi

java - 如何使用字符串或整数以外的数据类型启动 Intent?

转载 作者:行者123 更新时间:2023-12-01 11:52:56 25 4
gpt4 key购买 nike

我有一个通过 Sphero Android SDK 控制 Sphero 的应用程序,在我的 MainActivity 中,我让用户连接 Sphero,并且 Sphero 连接到变量 mRobot。我想创建一个我的 MainActivity 中已有的 Intent:

Intent calibrationIntent = new Intent(MainActivity.this, CalibrationActivity.class);
calibrationIntent.putExtra("Robot", mRobot);
startActivity(calibrationIntent);

这里,我将 mRobot 变量放在 putExtra() 中在 CalibrationActivity.class ,我试图获取额外的变量,但我不能:

Intent calibrationIntent = getIntent();
Bundle bundle = getIntent().getExtras();
Sphero mRobot = bundle.getString("Robot");

我在 Sphero mRobot = bundle.getString("Robot"); 行中收到错误因为我正在尝试将机器人数据类型转换为字符串。

我该如何通过 mRobot通过 Intent 变量,以便我可以在其他 Activity 中修改它?我尝试使用 mRobot.toString(); 在我的 MainActivity 中转换为字符串,但我不知道如何将其转换回 robotcalibrationActivity .

编辑:

我尝试使用getParcelable()getSerializable()在我的MainActivity在我的CalibrationActivity中,我通过

将字符串转换为 Sphero
Sphero mRobot = (Sphero) bundle.getParcelable("Robot"); 

Sphero mRobot = (Sphero) bundle.getSerializable("Robot");

但是当我连接 Sphero 后一按下按钮,应用程序就崩溃了,日志是 Caused by: java.lang.ClassCastException: orbotix.robot.base.Robot cannot be cast to orbotix.sphero.Sphero

最佳答案

好吧,我想我没有仔细阅读你的问题。

I get an error in the line Sphero mRobot = bundle.getString("Robot"); because I am trying to convert a Robot data type into a string.

我没有注意到您说它是一个 Robot 数据类型,我只是查看了您将 mRobot 声明为 Sphero 。现在查看您的错误消息:

java.lang.ClassCastException: orbotix.robot.base.Robot cannot be cast to orbotix.sphero.Sphero

问题是 mRobot 不是 Sphero。它是一个机器人。具体来说,它是一个 orbotix.robot.base.Robot

更改为:

机器人mRobot = (机器人)bundle.getParcelable("Robot");

假设你有

导入orbotix.robot.base.Robot

我对 Sphero SDK 的类型系统不熟悉,所以不知道 SpheroRobot 在类型层次结构中是如何关联的,但是错误消息告诉您:您序列化了一个 Robot 并尝试将其反序列化为 Sphero

关于java - 如何使用字符串或整数以外的数据类型启动 Intent?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28652673/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com