Может ли команда запаздывать?
Не понимаю. В моей главной активности есть сей момент:
gvMain = (GridView)findViewById(R.id.gvMain);
gvMain.setNumColumns(4);
gvMain.setHorizontalSpacing(10);
gvMain.setVerticalSpacing(10);
...
ResizeDefaultBackgrounds();
new UpdateTask(this).execute(dataTime);
т.е. я устанавливаю в GridView 4 колонки, а позже выполняю ресайз фонов (т.к. заведомо не известно на экране с каким разрешением будет приложение, а деформировать фоны не хорошо, поэтому обрезаю). Так вот, в методе ResizeDefaultBackgrounds() есть строка
int picSize = getSizeBitmapToDisplay(0.95f);
Где в свою очередь getSizeBitmapToDisplay использует количество колонок:
int count = gvMain.getNumColumns();
DisplayMetrics metricsB = ((MainActivity)context).getResources().getDisplayMetrics();
int newWidth = (int)((metricsB.widthPixels/(float)count)*fillPart);
return newWidth;
дабы не хранить неоправданно большие картинки, так сказать. Так вот если вывести в логи значение gvMain.getNumColumns(); из последнего отрывка, то он будет равняться -1. Как так? Я же задал 4? При этом если использовать
int picSize = getSizeBitmapToDisplay(0.95f);
внутри следующей команды из главной активности
new UpdateTask(this).execute(dataTime);
То там уже корректно будет геттер давать 4 колонки.