如何在多个活动之间共享数据?

时间:2016-10-25 08:03:09

标签: java android

这将是我在android studio中的第一个项目。我有一些java和C / C ++经验。在程序开发方面,我仍然是一个初学者。我从未开发过Android应用程序。

此应用将用于跟踪锻炼计划。用户将被要求为以下各项输入他的1次最大值;长凳,深蹲,硬拉。我希望应用程序使用这些输入来将锻炼程序基于它们。这将涉及共享和操纵此数据的多个活动。

获取用户输入的最佳方式是什么,保存它(意味着将其存储在某处并保持不变,即使应用程序终止),还有多个活动可以访问它以显示?该应用程序只会要求用户输入一次。如果用户想要更改输入,则可以在设置中完成。

4 个答案:

答案 0 :(得分:4)

当您调用Intent从一个活动跳转到其他活动时,您可以放置​​第二个活动或任何进一步使用所需的一些数据或值。您必须为所有活动呼叫执行相同操作,最后您可以在需要数据的地方使用它。

intentObject.putExtra("KEY", value);

Bundle bundle = getIntent().getExtras();

int value = bundle.getInt("KEY");
or
String value = bundle.getString("KEY");
or
DataObject dataObject = bundle.getString("KEY");

您也可以使用Gson放置数据对象和获取数据对象。

答案 1 :(得分:1)

试试这个 使用INTENTS

关于第一项活动

Intent intent = new Intent(Activity_FROM.this, Activity_TO.class);

intent.putExtra("KEY1", value);

intent.putExtra("KEY2", "a value");

startActivity(intent);

On second activity

Bundle bundle = getIntent().getExtras();

int value = bundle.getInt("KEY1");

String value2 = bundle.getString("KEY2");

为了让它更清晰,你最好先了解android框架和术语的基本概念。完成后,您可以轻松了解流程。

访问www.vogella.com

答案 2 :(得分:1)

是的,意图是在活动之间传递信息的方式,但正如您将很快发现的那样,它们并不意味着保存整个数据对象并保持某种持久性,尝试实现数据传递将成为您的噩梦

看看一些持久性框架(让它成为一些SQLite包装器或我个人喜欢realm.io,因为它们提供了非常酷的功能,如实时自动更新对象,它构建在他们的c ++引擎和它上面#&# 39; s 非常 易于使用)...一旦将数据存储在某种数据层中,您只能通过意图传递对象的标识并查询它们在接收活动......

这样,你可以让你的模型在整个应用程序中保持不变,不会将对象的更改传播回源活动而失去与Parcelables相关的地狱(这是一种序列化你的方式)将其存储在意图中的对象

快乐的编码!

答案 3 :(得分:-1)

意图是将数据从一个活动传递到另一个活动的一种方式。但是每当你从一个活动改变到另一个活动时你需要传递它... 更简单有效的其他方法是使用单例:一个类,您可以通过为其创建实例来编写和访问任何活动。请看一下这个https://gist.github.com/Akayh/5566992