在 Orbotix,我们通常使用中央 Activity 并在其顶部显示临时活动,或者(最近)我们使用FragmentActivity首先显示处理连接的片段(您的问题中的同步)。从那里,我们使用不同的自定义片段显示不同的屏幕。
如果您绝对需要将 Robot 对象发送到另一个 Activity,您可以将机器人 id 添加到 Intent 中,然后在新的 Activity 中从 RobotProvider 获取机器人对象。这还要求您确保不会根据原始 Activity 的生命周期与 Sphero 断开连接。
在您的原始活动中:
private void startNextActivity() {
Intent nextActivity = new Intent(this, NextActivity.class);
nextActivity.putExtra("robot.id", mRobot.getUniqueId());
goingToNextActivity = true;
startActivity(nextActivity);
}
@Override
protected void onStop() {
super.onStop();
// don't disconnect if headed to "NextActivity"
if (!goingToNextActivity) {
RobotProvider.getDefaultProvider().disconnect(mRobot);
mRobot = null;
}
}
在您的新活动中:
@Override
public void onCreate(Bundle savedInstanceState) {
super.OnCreate(savedInstanceState);
// get the robot object sent through to this Activity
String robotId = getIntent().getStringExtra("robot.id");
Robot robot = RobotProvider.getDefaultProvider().findRobot(robotId);
}