我已经尝试了这个并且它有效,但我不知道这是不是坏事,因为活动之间的数据传输的所有帮助似乎都使用了意图。
在MainActivity中我有:
static PilotRecord pilotRecord = new PilotRecord(); //PilotRecord just contains data item declarations
在MainActivity.onCreate中:
pilotRecord.fuel = 100;
在MainActivity.onClick中:
Intent intent = new Intent(this, SubActivity.class);
startActivityForResult(intent, 0);
在SubActivity.onCreate中我有:
MainActivity.pilotRecord.fuel = 200;
在SubActivity.onClick中:
MainActivity.pilotRecord.fuel = 300;
setResult(RESULT_OK);
finish();
当我启动MainActivity时,燃油值为100
如果单击MainActivity,则会按预期显示SubActivity
如果单击SubActivity,将显示MainActivity,燃料值现在为300
如果按“返回”按钮,将显示MainActivity,燃料值现在为200
有没有人知道任何潜在的问题,因为对我来说似乎比设置意图等更简单。
答案 0 :(得分:3)
据我了解,您所做的事情会导致数据丢失。
SubActivity不应该操纵调用它的活动的数据。我认为没有任何保证您的MainActivity存在......
系统可能会随时决定将其终止并在您的SubActivity表示已准备好返回MainActivity时重新启动它。
您应该传回捆绑中的数据,并让MainActivity根据结果修改其数据。
Bundle stats = new Bundle();
stats.putString("fuel","300");
setResult(RESULT_OK, "PilotRecord", stats);
finish();
另外,请记住,在MainActivity中调用onPause()时,应将“Fuel”级别保存到某种持久性存储。
我建议您仔细阅读documentation for Activity,因为实施正确的回调非常重要。
答案 1 :(得分:1)
如果您真的想破解它,请创建另一个包含所有需要共享的静态变量的类。