Нет-нет, путаю я ресурсные идентификаторы R.id.something, а то и просто ошибаюсь при назначении.
В результате вызовы вроде ImageView _iv = (ImageView)findViewById(R.id.logoImage), возвращающие нулевой указатель,
приводят к исключениям и утомительному поиску по коду.
Прихоится загрязнять код многочисленными проверками навроде
Код: Выделить всё
ImageView _iv = (ImageView)findViewById(R.id.logoImage);
if(_iv == null) {
Log.e(PFApplication.DEBUG_TAG, "onAnimationEnd(Animation animation)");
}
Поскольку привык я в C++ к препроцессорным полезностям, в частности, условной компиляции, то это безобразие
хотелось заменить чем-то вроде
Код: Выделить всё
protected View findViewById(Activity activity, int resId) {
#ifdef _DEBUG_
View _v = activity.findViewById(resId);
if(PFApplication.DEBUG) {
if (_v == null) {
Log.e(PFApplication.DEBUG_TAG, String.format("error in %s with null-value for resource %x", activity.getClass().getName(), resId));
}
return _v;
#else
return activity.findViewById(resId);
#endif
}
Код: Выделить всё
protected View findViewById(Activity activity, int resId) {
View _v = activity.findViewById(resId);
if(PFApplication.DEBUG) {
if (_v == null) {
Log.e(PFApplication.DEBUG_TAG, String.format("error in %s with null-value for resource %x", activity.getClass().getName(), resId));
}
return _v;
}
Теперь в коде я просто делаю так
Код: Выделить всё
ImageView _iv = (ImageView)findViewById(this, R.id.logoImage)
Код: Выделить всё
error in com.vfx.SplashActivity with null-value for resource 0f003027
Удобно.