Java SharedReferences放置数组

Java SharedReferences放置数组,java,android,sharedpreferences,Java,Android,Sharedpreferences,如何使用此代码添加数组并在以后检索它? 我可以使用一个简单的for循环吗 SharedPreferences settings = getSharedPreferences("isChk", 0); SharedPreferences.Editor editor = settings.edit(); editor.putBoolean("keys",ArrayValue[i] ); editor.commit(); 然后如何检索它们并将每个元素存储在数组变量中?我可以使用这个吗

如何使用此代码添加数组并在以后检索它? 我可以使用一个简单的for循环吗

  SharedPreferences settings = getSharedPreferences("isChk", 0);
  SharedPreferences.Editor editor = settings.edit();
  editor.putBoolean("keys",ArrayValue[i] );
  editor.commit();
然后如何检索它们并将每个元素存储在数组变量中?我可以使用这个吗

for( int i=0; i<myArr.size(); i++){
keys[i] = settings.getBoolean("isChk", false);
isChkb.add(keys[i]);
}

for(inti=0;i以下是如何在共享首选项中保存数组

public static boolean saveTheArray()
{
 SharedPreferences sharedpref = SharedPreferences.getDefaultSharedPreferences(this);
 SharedPreferences.Editor mEdit1 = sharedpref .edit();
 mEdit1.putInt("Status_size", array.size()); //array-> the array to be saved 

for(int i=0;i<array.size();i++)  
{
    mEdit1.remove("Status_" + i);
    mEdit1.putString("Status_" + i, array.get(i));  
}

return mEdit1.commit();     
public静态布尔存储阵列()
{
SharedReferences SharedReferences=SharedReferences.GetDefaultSharedReferences(此);
SharedReferences.Editor mEdit1=SharedReference.edit();
mEdit1.putInt(“Status_size”,array.size());//数组->要保存的数组

对于(inti=0;i,这里是如何在共享首选项中保存数组

public static boolean saveTheArray()
{
 SharedPreferences sharedpref = SharedPreferences.getDefaultSharedPreferences(this);
 SharedPreferences.Editor mEdit1 = sharedpref .edit();
 mEdit1.putInt("Status_size", array.size()); //array-> the array to be saved 

for(int i=0;i<array.size();i++)  
{
    mEdit1.remove("Status_" + i);
    mEdit1.putString("Status_" + i, array.get(i));  
}

return mEdit1.commit();     
public静态布尔存储阵列()
{
SharedReferences SharedReferences=SharedReferences.GetDefaultSharedReferences(此);
SharedReferences.Editor mEdit1=SharedReference.edit();
mEdit1.putInt(“Status_size”,array.size());//数组->要保存的数组

对于(int i=0;i使用键名而不是
isChk
SharedReferences
获取键的值,因为
isChk
是SharedReferences名称:

keys[i] = settings.getBoolean("keys", false);
此外,您正在使用相同的键保存所有值
keys
,这样您只会获得添加的最后一个值。要存储所有值,请使用唯一的键,如
“keys”+i

有关如何在SharedReferences中添加数组的更多信息,请参阅本文:


使用密钥名称而不是
isChk
SharedReferences
获取密钥值,因为
isChk
是SharedReferences名称:

keys[i] = settings.getBoolean("keys", false);
此外,您正在使用相同的键保存所有值
keys
,这样您只会获得添加的最后一个值。要存储所有值,请使用唯一的键,如
“keys”+i

有关如何在SharedReferences中添加数组的更多信息,请参阅本文:


要在
共享引用中存储
数组
,您可以将
数组值
放入
字符串
,然后存储此
字符串
。如果您想获取
数组值
(在我们的例子中,存储在字符串中),您可以使用
StringTokenizer
获得
字符串
并对其进行
解析,如下所示:(在我的示例中,我将存储并检索一个布尔值数组)

  • 将布尔值放入字符串中,用字符(例如逗号)分隔每个int,然后将其另存为字符串:

    SharedPreferences prefs = getPreferences(MODE_PRIVATE);
    Boolean[] list = new Boolean[10];
    StringBuilder str = new StringBuilder();
    for (int i = 0; i < list.length; i++) {
    str.append(list[i]).append(",");
    }
    prefs.edit().putBoolean("keys", str.toString()).commit();
    
    SharedPreferences-prefs=getPreferences(MODE\u PRIVATE);
    布尔[]列表=新的布尔值[10];
    StringBuilder str=新的StringBuilder();
    for(int i=0;i
  • 获取字符串并使用StringTokenizer对其进行分析:

    String savedString = prefs.getString("string", "");
    StringTokenizer st = new StringTokenizer(savedString, ",");
    Boolean[] savedList = new Boolean[10];
     for (int i = 0; i < 10; i++) {
        savedList[i] = Boolean.valueOf(st.nextToken();
      }
    
    String savedString=prefs.getString(“String”,“字符串”);
    StringTokenizer st=新的StringTokenizer(savedString,“,”);
    Boolean[]savedList=新布尔值[10];
    对于(int i=0;i<10;i++){
    savedList[i]=Boolean.valueOf(st.nextToken();
    }
    

要在
共享引用中存储
数组
,您可以将
数组值
放入
字符串
,然后存储此
字符串
。如果您想获取
数组值
(在我们的例子中,存储在字符串中),您可以使用
StringTokenizer
获得
字符串
并对其进行
解析,如下所示:(在我的示例中,我将存储并检索一个布尔值数组)

  • 将布尔值放入字符串中,用字符(例如逗号)分隔每个int,然后将其另存为字符串:

    SharedPreferences prefs = getPreferences(MODE_PRIVATE);
    Boolean[] list = new Boolean[10];
    StringBuilder str = new StringBuilder();
    for (int i = 0; i < list.length; i++) {
    str.append(list[i]).append(",");
    }
    prefs.edit().putBoolean("keys", str.toString()).commit();
    
    SharedPreferences-prefs=getPreferences(MODE\u PRIVATE);
    布尔[]列表=新的布尔值[10];
    StringBuilder str=新的StringBuilder();
    for(int i=0;i
  • 获取字符串并使用StringTokenizer对其进行分析:

    String savedString = prefs.getString("string", "");
    StringTokenizer st = new StringTokenizer(savedString, ",");
    Boolean[] savedList = new Boolean[10];
     for (int i = 0; i < 10; i++) {
        savedList[i] = Boolean.valueOf(st.nextToken();
      }
    
    String savedString=prefs.getString(“String”,“字符串”);
    StringTokenizer st=新的StringTokenizer(savedString,“,”);
    Boolean[]savedList=新布尔值[10];
    对于(int i=0;i<10;i++){
    savedList[i]=Boolean.valueOf(st.nextToken();
    }
    

要从数组创建arraylist??只能存储布尔、int、float、long和字符串。存储数组的唯一方法是使用字符串选项并将所有变量添加到一起,然后在需要时将其解码为数组(请参阅下面的答案).Nooo只需将阵列保存到存储器中,然后在需要时将其读回即可。是的,我收到了,谢谢:)要从数组创建arraylist??只能存储布尔、int、float、long和字符串。存储数组的唯一方法是使用字符串选项并将所有变量添加到一起,然后在需要时将其解码为数组(请参见下面的答案).nooo只需将数组保存到存储器中,然后在需要时将其读回。是的,我得到了,谢谢:)为了获取数组,我可以使用相同的函数并替换get的put吗?这是否仍然适用于isChkb.add(settings.getBoolean(“Status_“+i,false));在使用pubolean()之后因此,我存储布尔值,为了获取和检索数组,我可以使用相同的函数并替换get的put吗?在使用puBoolean()之后,这仍然适用于isChkb.add(settings.getBoolean(“Status_“+i,false))所以我存储布尔值不客气,我使用这种方式是因为它很简单,并且可以完美地完成我想做的事情我很难理解第一次启动应用程序时发生了什么,其中首选项还没有出现,它是否会返回错误?不客气,我使用这种方式是因为它很简单,并且可以完美地完成我想做的事情在应用程序第一次启动时,如果首选项还不存在,则无法理解会发生什么,是否会返回错误?