Android中有趣而又经常犯错的小知识点,那些总能扬嘴一笑的小错误---吴明辉
开发过程中常会遇到一些简单的错误,每当回头去修改时都不禁扬嘴一笑。我希望这篇文章能一起见证自己的成长,把开发过程中有趣小错误都一一记下来,把快乐和大家一一分享。
问题一:(栗子:获取当前星期)
- "R.string.xx"获取String中的数据常被误以为返回的是String类型;
- "equals()"和"="的使用经常容易混淆;
举个栗子:
/**
* 获取当前星期,add by 吴明辉
*
* @return
*/
public static String getWeek(Context context) {
final Calendar c = Calendar.getInstance();
c.setTimeZone(TimeZone.getTimeZone("GMT+8:00"));
mWay = String.valueOf(c.get(Calendar.DAY_OF_WEEK));
if ("2".equals(mWay)) {
mWay = context.getString(R.string.monday);
} else if ("3".equals(mWay)) {
mWay = context.getString(R.string.tuesday);
} else if ("4".equals(mWay)) {
mWay = context.getString(R.string.wednesday);
} else if ("5".equals(mWay)) {
mWay = context.getString(R.string.thursday);
} else if ("6".equals(mWay)) {
mWay = context.getString(R.string.friday);
} else if ("7".equals(mWay)) {
mWay = context.getString(R.string.saturday);
} else if ("1".equals(mWay)) {
mWay = context.getString(R.string.sunday);
}
return mWay;
}
<!-- 星期 -->
<string name="monday">星期一</string>
<string name="tuesday">星期二</string>
<string name="wednesday">星期三</string>
<string name="thursday">星期四</string>
<string name="friday">星期五</string>
<string name="saturday">星期六</string>
<string name="sunday">星期天</string>
在以上代码中我们常常会习惯性的把mWay = context.getString(R.string.monday)换成mWay = R.string.monday返回的数据可就不一样了,当然大神可能不会,但小菜确实是被误导过。
罪魁祸首:xx.setText(R.string.xx)和xx.setText("String类型");
解决:this.getString(R.string.xx);
"equals()"和"="也好玩了,把上面代码mWay = context.getString(R.string.monday)中的"="换成"equals()"返回的可不是你想要的星期一了。
原因:"="是获取context.getString(R.string.monday)的对象,而"equals()"则是context.getString(R.string.monday)的值。
解决:记住"equals()"是比较值,而"="是比较对象。
END
编辑:吴明辉