【问题标题】:Passing complex objects to file in android将复杂对象传递给android中的文件
【发布时间】:2014-03-17 19:47:59
【问题描述】:

我的想法是我想传递 Buttons/EditTexts/TextViews/Classes/etc 的实例。并将其保存到 android 中的文件中,然后将其解压缩以在下次访问时重新启动 Activity。

真的有可能吗?

我试过了

  • 可序列化,但意识到如果不将那些不受序列化影响的对象声明为 transient 就无法完成
  • Parcelable,同样的问题
  • JSONObject,无法将获取的对象重新转换为 Button/Layout/etc..
  • GSon,得到了一个无限递归循环

请问有什么帮助吗?

【问题讨论】:

    标签: android json class button serialization


    【解决方案1】:

    您永远不应序列化 UI 元素,例如 ButtonsLayouts。 而是将数据保存在 UI 后面,例如文本,可能还有一些标志等。

    我建议使用SharedPreferences

    【讨论】:

    • 所以没有办法像保存 UI 元素的状态然后从它过去的状态重新创建元素吗? @FD_
    • 想想模型-视图-控制器模式:视图应该只代表数据,必须单独保存。本着这种精神,虽然可能有办法做到这一点,但不要尝试。
    • 另外,看看Views 有多少字段以及您需要多少字段 - 想象一下如果您只是序列化 UI 会浪费空间。
    • 好的,我现在确信了,感谢您抽出时间来解决这个问题。我只是不明白为什么这个网站上的仇恨,我只是来这里学习,我已经搜索了很多答案,无法在其他地方得到它
    • 对不起,如果我写的任何东西听起来像冒犯 - 这当然不是这样的。至于你得到的反对票,恐怕反对票的人甚至没有对原因发表评论。
    【解决方案2】:

    您应该使用SharedPreferences 这就是它存在的原因。您可以为您的应用程序创建一个私有SharedPreferences,并为您必须保存的每个属性声明一个唯一键。 SharedPreferences 的每个属性/值也应该有一个 Default 值(当您尝试检索以前未设置的值时获得的值)

    这个Link会帮助你理解它

    【讨论】:

    • 不,你可以t save the whole Object for sure. You can store its state (e.g. textView.getText()` Text 为文本,toggleButton.getState() BooleantoggleBotton.isPressed() 布尔值...等
    • 为您的回答点赞,非常感谢您花时间帮助我
    猜你喜欢
    • 1970-01-01
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2020-10-09
    • 2017-02-07
    • 2011-01-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多