在我的应用程序中,我使用共享偏好存储二维数组,其中包含日期现在我必须将数组日期与当前日期匹配
整个事情是公开的onrecieve()
在保存时它没有给我任何错误但是当我将当前日期与数组日期匹配时它总是显示错误并不重要日期是什么并且它永远不会进入if条件
String[][] my_date;
Set<String> checkDate;
/* getting today date and coverting it into string */
Calendar cal=Calendar.getInstance();
int todaysDate = cal.get(Calendar.DAY_OF_MONTH);
String cDate = Integer.toString(todaysDate);
SharedPreferences pref = arg0.getSharedPreferences("MyPref", 0); // 0 - for private mode
SharedPreferences.Editor editor = pref.edit();
Set<String> set = new HashSet<String>();
for(int i = 0; i < my_date.length; i++){
for(int j = 0; j < my_date[i].length; j++){
set.add("'" + my_date[i][j] + "'");
Log.v("dates", my_date[i][j]);
}
}
editor.putStringSet("dates", set);
editor.commit();
checkDate = pref.getStringSet("dates", set);
if(checkDate.contains(cDate)){
Intent mIntent = new Intent(arg0,DialogActivity.class);
mIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
arg0.startActivity(mIntent);
}
答案 0 :(得分:0)
在将String添加到集合之前和之后添加'
。将此更改为以下内容仅存储日期。比你的字符串应该是平等的:
set.add(my_date[i][j]);//instead of set.add("'" + my_date[i][j] + "'");
答案 1 :(得分:0)
当然它总会给你false
。您使用撇号将日期数字放入集合中。因此,您的Set
将包含以下内容:'1', '2', '3'
。虽然String
的{{1}}代表没有这样的撇号,但cDate
不等于String.valueOf(1)
。尝试替换它:
"'1'"
用这个:
set.add("'" + my_date[i][j] + "'");