【发布时间】:2015-12-08 16:13:03
【问题描述】:
我正在尝试使用持续时间范围选择曲目。 比如
String start = null;
String end = null;
if (criteria == getString(R.string.uptofivemins)) {
start = "0";
end = "300000";
}
String[] crit = {start,end};
String where = "duration >= ? AND duration < ? ";
//....
private final Uri uri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
private final String duration = MediaStore.Audio.Media.DURATION;
//etc...
cr.query(uri, columns, where, crit, null);
问题似乎是因为我需要输入字符串开始和结束,结果查询将使用这些执行。然而,数据库字段“duration”是 int 类型,从返回的结果中我怀疑比较是针对字符串而不是 int,因此选择不正确。 任何对如何使用持续时间范围(例如
【问题讨论】:
-
'criteria' 似乎是字符串类型。如果是这样,为什么不使用 'String.equals()' 进行比较?
-
此外,如果需要,您可以将字符串转换为整数,将整数转换为字符串。使用
String.valueOf(int)和Integer.parseInt(string) -
我熟悉这些方法,但问题在于将值传递给查询。 crit 只接受字符串而不是 int 。
-
1.很好,您更改了查询(“crit”而不是“criteria”) - 我几乎可以肯定这只是一个错字 2. 根据我自己的经验,将 {"5", "30"} 提供给 a 没有问题询问。如果相应的列被声明为数字,则数据库会将输入读取为数字。所以如果你得到意想不到的结果,我仍然怀疑比较 (criteria == getString(R.string.uptofivemins) ) 是问题所在。
标签: android playlist mediastore playlists