• Как с помощью переключателя Switch сделать видимым/невидимым объект ExtractEditText?

    azerphoenix
    @azerphoenix Куратор тега Java
    Java Software Engineer
    Здравствуйте!
    1) добавьте view компонент switch & edittext в activity.
    2) добавьте конструкцию следующего вида:
    if (switch1.isChecked()) {
    editText.setVisibility(View.VISIBLE);
    } else {
    editText.setVisibility(View.GONE);
    //или editText.setVisibility(View.INVISIBLE);
    }


    Между Gone & Invisible есть разница. Если вкратце... Они оба скрывают view компонент. Однако, invisible скрывает, но занимает место.. А Gone скрывает и не занимает места...
    Ответ написан
    2 комментария
  • Почему прирощение на единицу в цикле break ставиться в конце, а в цикле с continue в начале?

    mindtester
    @mindtester
    http://iczin.su/hexagram_48
    исключительно игры разума, автора(ов) этих фрагметов фрагментов ("волюнтаризм!" (с) к.ф "Кавказская пленица")

    так как в обоих случаях, цикл основан на счетчике, его гарантированно можно переписать на основе for, компактнее и более читаемо (понятно)

    ps а еще, хорошо бы знать исходную цель? надо ли кого то пропускать? кого? зачем? почем?.. и тд

    pps кстати, о креше второго фрагмента, перенос инкримента счетчика ((upd) в конец цикла ну или по меньшей мере после строки
    String thePlayer = players[counter]; устраняет креш ;))
    может посыл автора примера в этом?

    ppps ну или вообще в си-стайл (постинкримент по месту использования) обдумайте, почему исходный пример (вариант 2) крешится? а предложенные правки - нет
    String players[] = {"David", "Daniel", "Anna", "Gregory"};
            int totalPlayers = players.length;
     			int counter=0;
             while (counter < totalPlayers)
             {
             String thePlayer = players[counter++];
            if (thePlayer.equals("David")){
                 continue;
             }
             System.out.println("While equals Congratulations, "+ thePlayer+ "!");
            }


    в любом случае, расположение break, continue, и инкремента опорного счетчика цикла - исключительно на совести кодера

    pppps конец мистики (мы говорим о втором фрагменте)
    строка counter++; если расположена до String thePlayer = players[counter]; вызовет креш выхода за диапазон, так как while (counter < totalPlayers) условие проверил, но мы тут же его изменяем (инкремент)
    counter должен быть использован после проверки на корректность, но изменен только после использования..
    следите дальше:
    counter должен быть изменен до выхода из данного круга цикла ((upd)по continue.. а break оборвет цикл.. в целом не плохие примеры задуматься/вспомнить, как что работает ))
    то есть - если мы поместим его после continue цикл становится вечным ))
    так что либо
    String thePlayer = players[counter++];
    либо
    String thePlayer = players[counter];
    counter++; // но обязательно сразу, строго после, и ни в коем случае не раньше
    Ответ написан
    6 комментариев
  • Почему прирощение на единицу в цикле break ставиться в конце, а в цикле с continue в начале?

    @Shiftuia
    Java-программист
    Потому что код делает разные вещи.

    В первом случае поздравления получат первые 3 человека, а потом break выбросит нас из цикла

    Во второму случае инкрементируя counter мы проскакиваем "David" и поздравляем последних 3 человек, упав при этом в ArrayIndexOutOfBound из за того что сначала инкрементировали counter, а потом попытались взять элемент массива с индексом 4.
    Ответ написан
    2 комментария