如何使一个对象可以被Android程序中的所有活动访问?
我有一个应用程序,其中包含两个活动/屏幕和一个我从中创建对象的java类。
我需要在第二个活动中使用在第一个活动(实例化 .java 类)中创建的对象。
最简单的方法是什么?我用谷歌搜索了一下,在 java 类上实现 Parcelable 接口似乎是这个问题最常见的答案。但这个对象有点复杂,分割它的每个成员似乎是一个蛮力解决方案。
难道就没有一个优雅的解决方案吗?
谢谢
编辑:将对象数据存储在简单的 SQlite 数据库上是一个解决方案吗?
I have an application which consists of two activities/screens and a java class from which i create objects.
I need to use an object I created on the first activity (instanciating the .java class) on the second activity.
What is the simplest way to do this? I googled about it and implementing the Parcelable interface on the java class seems to be the most common answer to this problem. But the object is kind of complex and parceling every single member of it seems like a brute-force solution.
Isn't there an elegant solution to this?
Thanks
EDIT: Is storing the object data on a simple SQlite database a solution?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
您可以使用应用程序上下文(尽管这基本上是存储全局状态,因此您需要小心如何使用它):
到处使用应用程序上下文?
You could use the application context (although this is basically storing global state so you need to be careful how you're using it):
Using Application context everywhere?
在活动之间传递信息的最简单方法之一是使用捆绑。
您可以在启动新活动之前向 Intent 添加额外内容。
在另一端(另一个活动),您可以从 Bundle 中接收这些额外,并可能在新活动中重建对象。
这是一个示例:
首先,这是学生类:
Student 类 - Student.java:
Main Activity 将引用 Student 类来生成对象 s
Main Activity - AndroidObjectSharing.java:
这是绑定到的 XML学生类:
主 XML 布局 - main.xml:
请注意,NewActivity 从 Bundle(在本例中名为 infoBundle)访问信息。 。
该对象以编程方式“重建”,就像它已被传递一样
新活动 - NewActivity.java:
不要忘记将新活动添加到您的清单中!
Android Manifest - AndroidManifest.xml:
对于 XML 和编程脚本的混合感到抱歉,我在第一个 Activity 之后意识到需要显示很多文件,所以我压缩了最后一个文件,但你应该能够得到这个想法..
希望这有帮助!
One of the easiest ways to pass information between activities is to use Bundles.
You can add extras to an Intent before launching a new Activity.
On the other end (the other activity) you can then receive these extras out of the Bundle and possibly rebuilt the Object in the new activity..
Here's an Example:
First of all, here's the Student Class:
Student Class - Student.java:
The Main Activity will reference the Student class to generate an object s
Main Activity - AndroidObjectSharing.java:
Here's the XML that is tied to the Student Class:
Main XML Layout - main.xml:
Note that the NewActivity accesses the information from a Bundle (named infoBundle in this case)..
The object is "rebuilt" programmatically as if it was passed.
New Activity - NewActivity.java:
Don't forget to add the new activity to your Manifest!
Android Manifest - AndroidManifest.xml:
Sorry for the mix of XML and Programmatic Scripting, I realized after the first Activity that it would be a lot of files to display so I condensed the last file, but you should be able to get the idea..
Hope this helps!
我认为 Singleton 是创建可在所有活动中访问的对象的正确方法。它是一种只能创建一次的对象,如果您尝试再次访问它,它将返回该对象的现有实例。有关其工作原理的更多信息,请参阅此答案。
I think Singleton is the right way to create an object accessible in all activities. It's a kind of object that only can be created once, and if you try to access it again it will return the existing instance of the object. See this answer for more information about how it works.