【问题标题】:SharedPreferences - Android (different data types)SharedPreferences - Android(不同的数据类型)
【发布时间】:2014-01-14 22:41:01
【问题描述】:

我在两个不同的活动之间共享数据时遇到问题。我有类似的数据:

 int number
 String name 
 int number_2
 int time
 int total

我正在尝试使用这组数据制作类似订单列表的内容。因此它将获取一组数据,然后返回之前的活动,继续向前并再次向其中添加数据。

我有一个想法,将它放在对象数组中 - 但是在更改活动后,里面的数据被清除了。

我该怎么做?

我不知道是否以及如何将对象数组添加到 SharedPreferences ,并从那里获取一个元素的值。

【问题讨论】:

标签: android primitive-types


【解决方案1】:

如果您想即时将键与要传递给第二个活动的值相关联,则应该查看Intent(s) 的文档。

无论如何,您可以考虑任何(sharedpref、database、...)方式来传递您的参数,但对于这些事情,这是一种约定,也是一种好的做法。

【讨论】:

    【解决方案2】:

    不要为此使用共享首选项...使用单例模式,扩展应用程序,或者只使用静态变量创建一个类并更新它们...

    您可以使用 .putExtra,但由于您要与多个活动进行交流,因此上述建议可能是最好的。

    public class ShareData {
    private String s;
    private int s;
    private static ShareData shareData = new ShareData();
    private ShareData(){}
    
    public static ShareData getInstance(){ return shareData} 
    //create getters and setters;
    }
    

    【讨论】:

    • 为什么投反对票,答案是否与问题无关? OP 希望在两个活动之间传递数据,而不是在应用程序关闭后保存数据。
    • 因为这是应该避免的事情之一。它有效,但它不是 Android 平台在活动之间交换值的传统方式。
    • @SimoneCasagranda 常规方式是什么?
    • 为了问题的目的在活动之间交换内容的方式与意图相关的数据完全吻合。通过这种方式,您可以将例如一些数据返回到活动回调 onActivityResult,从接收到的意图中您可以检查输入,...在我看来,使用单例只是一个不允许您确定的黑匣子拥有一些东西并且该值是最新的,...
    • 我有点不同意常规部分。使用单例模式是 android 开发者文档developer.android.com/guide/faq/framework.html#3 的一部分
    【解决方案3】:

    为什么不使用意图

    Intent intent = new Intent(FirstActivity.this, (destination activity)SecondActivity.class);
    intent.putExtra("some_key", value);
    intent.putExtra("some_other_key", "a value");
    startActivity(intent);
    

    在第二个活动中

    Bundle bundle = getIntent().getExtras();
    int value = bundle.getInt("some_key");
    String value2 = bundle.getString("some_other_key");
    

    编辑如果您想了解更多关于将数组添加到共享首选项的信息,请查看此

    Is it possible to add an array or object to SharedPreferences on Android

    还有这个

    http://www.sherif.mobi/2012/05/string-arrays-and-object-arrays-in.html

    【讨论】:

    • OP 正在与多个活动共享数据
    • 这不是回答问题,而是回答你认为 OP 应该问的问题。
    • sry 但是,OP 是什么意思??
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多