这将是我在android studio中的第一个项目。我有一些java和C / C ++经验。在程序开发方面,我仍然是一个初学者。我从未开发过Android应用程序。
此应用将用于跟踪锻炼计划。用户将被要求为以下各项输入他的1次最大值;长凳,深蹲,硬拉。我希望应用程序使用这些输入来将锻炼程序基于它们。这将涉及共享和操纵此数据的多个活动。
获取用户输入的最佳方式是什么,保存它(意味着将其存储在某处并保持不变,即使应用程序终止),还有多个活动可以访问它以显示?该应用程序只会要求用户输入一次。如果用户想要更改输入,则可以在设置中完成。
答案 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