Приложение блокируется без ошибок при перерисовке графического интерфейса пользователя с setContentView - PullRequest
0 голосов
/ 29 января 2011

Я создаю раскладку в коде в onCreate. Внутри этого макета у меня есть спиннер с зарегистрированным слушателем. Когда пользователь изменяет элемент в счетчике, новые данные считываются и макет должен быть изменен в соответствии с данными. Я делаю это с помощью той же функции, что и в onCreate (я создаю scrollview и другие представления и вызываю setContentView (scollView) в последней строке).

Макет меняется правильно, но все блоки, вращатель и кнопки больше не могут быть нажаты. Logcat не отображает ошибок (только много освобожденных GC х объектов).

Я пытался вызвать scrollview.removeAllViews (), прежде чем пытаться перерисовать макет, но это тоже не помогает.

Что мне здесь не хватает?

Ответы [ 2 ]

0 голосов
/ 29 января 2011

Я обнаружил проблему в моей функции onItemSelected, где я забыл изменить логическое значение «firstTime», поэтому эта функция вызывалась снова и снова.

   public void onItemSelected(AdapterView<?> parent, View view, int pos, long id) {
        if (firstTime) {
            //do nothing (just change the flag) because we don't want this called during UI   building
            firstTime=false;
        }    
        else {
            posit=pos;
            String koda=Roaming.m.get(parent.getItemAtPosition(pos).toString());
            Roaming.operaterji.clear();
            Roaming.parsePrices(json, koda);
            getAll();
            firstTime=true; //FORGET TO SET FLAG BACK TO TRUE, SO THIS WAS CALLED IN A LOOP
            makeGui();


        }           
    }
0 голосов
/ 29 января 2011

Предположительно, вы создаете совершенно новый набор объектов кнопок и блесны. Вам необходимо снова зарегистрировать всех слушателей для этих новых объектов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...