存储数组的共享首选项,代码不会到达if部分

时间:2014-02-11 16:54:31

标签: android sharedpreferences

我使用共享偏好来存储像这样的字符串:"hello,hi,watsup,gdni8"并且在接收者的一侧我通过使用string.split(“,”)将其拆分并存储在字符串数组中。
我的代码是

//isRegistered is just a button check
if(isRegistered) {
    String seperatedByComma=preferences.getString("keysSeperatedByComma","");
    String arrayOfSeperatedStrings[]=seperatedByComma.split(","); 
    for( int j=0;j< arrayOfSeperatedStrings.length;j++) {
        if(message.equalsIgnoreCase(arrayOfSeperatedStrings[i])) {
            flag=1;
            break;                      
        } 
    }

if(flag==1){                                                
    String keymessage=preferences.getString("AutomaticResponse", "");   
    // do action
} else {
    String defaultmessage="i am busy,talk to you later";
    //do action
}

这就是我正在使用的那种代码,好吧如果我为该字符串“keysSeperatedByComma”提供一个单词,如“gdnite”,它的到达并且标志设置为1 ..但是如果我给出像“gdnite”这样的东西,嗨“即使hi在那里,它也没有达到if块,否则部分正在执行 “gdnite,gdni8”,它没有达到

2 个答案:

答案 0 :(得分:0)

我不知道Array必要条件是否是强制要求,但如果您可以使用Set,则完全有可能。

自API级别11及更高版本起,它实现了getStringSet()。更多信息here

所以基本上你可以定义一个Set<String>,使用它们并存储整个结构。之后,您可以使用此方法恢复它。

答案 1 :(得分:0)

for( int j=0;j< arrayOfSeperatedStrings.length;j++){

if(message.equalsIgnoreCase(arrayOfSeperatedStrings[j]))//instead of [i] replace it with [j]
{
flag=1;
break;
                                                                                                }


}

试试这段代码