在实际开发中我们可能需要动态的添加视图,但是这些视图的Id怎么设置呢,直接设置int数进去可是会报错的哟,Android系统已经为我们想好了办法使用View.generateViewId()就可以生成一个不重复的Id但是这个方法,但是该方法只能使用在sdk17以上,那么怎样兼容低版本呢,下面就给出解决方法
public static int generateViewId() {
for (;;) {
final int result = sNextGeneratedId.get();
// aapt-generated IDs have the high byte nonzero; clamp to the range under that.
int newValue = result + 1;
if (newValue > 0x00FFFFFF) newValue = 1; // Roll over to 1, not 0.
if (sNextGeneratedId.compareAndSet(result, newValue)) {
return result;
}
}
}
在调用的地方可以这样使用
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN_MR1) {
myView.setId(Utils.generateViewId());
} else {
myView.setId(View.generateViewId());
}
}
好了,大家快去试试把