Страница 1 из 2
Неактивные кнопки циклом
Добавлено: 18 авг 2013, 17:14
Mr. Nobody
У меня есть 20 кнопок с id от level_1 до level_20
Подскажите, пожалуйста, как мне первые 10 кнопок сделать неактивными
Код: Выделить всё
for (int i=1; i <= 10; i++){
String namebutton = "level_" + Integer.toString(i);
namebutton.setEnabled(false);
}
Что-то вроде этого, но, естественно это не работает, так как там строка.
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 20:02
xr0m
Eval аналог? Не, нету. Используй массив кнопок
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 20:19
Foenix
я тебе ссылку давала, ты ее проигнорировал.
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 20:53
Mr. Nobody
Foenix писал(а):я тебе ссылку давала, ты ее проигнорировал.
Ссылку не видел, скиньте, пожалуйста, еще раз
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 20:55
Mr. Nobody
По аналогу с прошлым моим вопросом должно быть что-то такое
Код: Выделить всё
for (int i=1; i <= Constants.k; i++){
String namebutton = "level_" + Integer.toString(i);
int fullnamebutton = getResources().getIdentifier(namebutton, "drawable", getPackageName());
fullnamebutton.setEnabled(false);
}
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 20:58
Mikhail_dev
А можно поинтересоваться, зачем 20 кнопок? Если это калькулятор, то что мешает по ID к ним обратиться? Или они созданы динамически? Если да, то что мешало создать статически? =)
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 21:00
Mr. Nobody
Это выбор уровня в игре, есть некое число K (сколько уровней из 20 пройдено), вот и нужно помечать пройденные K уровней
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 21:20
xr0m
no-- писал(а):А можно поинтересоваться, зачем 20 кнопок? Если это калькулятор, то что мешает по ID к ним обратиться? Или они созданы динамически? Если да, то что мешало создать статически? =)
20 однотипных статичных переменных? Мде... на скорость не повлияет, но качество и читабельность программы упадет.
Для уровней используй линк лист.
Re: Неактивные кнопки циклом
Добавлено: 18 авг 2013, 21:28
Foenix
Ссылка в прошлой твоей теме про кнопки и их id
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 12:35
Mr. Nobody
Foenix, спасибо, разобрался в коде, вроде все просто, но неожиданно вот такая ошибка
Код: Выделить всё
Context mContext = getActivity().getBaseContext() ;
for (int position = 1; position < idOfButtons.length; position++) {
if (position < Integer.parseInt(savedText)){
Integer btnId = mRes.getIdentifier(idOfButtons[position], "id", mContext.getPackageName());
Button btn = (Button) findViewById(btnId);
btn.setBackgroundColor(Color.BLUE);
}
}
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 12:56
Foenix
да потому что этот метод для фрагмента, а ты находишься в активити, используй this
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 14:45
Mr. Nobody
Спасибо, при запуске вылетает
OnCreate
Код: Выделить всё
idOfButtons = new String [Constants.k + 1];
idOfButtons[1] = "level_1";
idOfButtons[2] = "level_2";
idOfButtons[3] = "level_3";
idOfButtons[4] = "level_4";
idOfButtons[5] = "level_5";
idOfButtons[6] = "level_6";
idOfButtons[7] = "level_7";
idOfButtons[8] = "level_8";
idOfButtons[9] = "level_9";
idOfButtons[10] = "level_10";
idOfButtons[11] = "level_11";
idOfButtons[12] = "level_12";
idOfButtons[13] = "level_13";
idOfButtons[14] = "level_14";
idOfButtons[15] = "level_15";
idOfButtons[16] = "level_16";
idOfButtons[17] = "level_17";
idOfButtons[18] = "level_18";
idOfButtons[19] = "level_19";
idOfButtons[20] = "level_20";
for (int position = 1; position <= Constants.k; position++) {
if (position <= Integer.parseInt(savedText)){
Integer btnId = mRes.getIdentifier(idOfButtons[position], "id", (this).getBaseContext().getPackageName());
Button btn = (Button) findViewById(btnId);
btn.setBackgroundColor(Color.BLUE);
}
}
Если закомментировать последний цикл, то ошибки нет
Constant.k = 20
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 15:53
Foenix
а ошибку привести забыл, всегда нужно лог давать
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 18:48
Mr. Nobody
Да я хотел, но у меня почему-то логи не ведутся, я не знаю в чем дело
в LogCat вообще ничего не пишет, в LogCat (deprecated) пишет только Info и то без указания времени. (одни "?? ?? ??")
Код: Выделить всё
for (int position = 1; position <= Constants.k; position++) {
if (position <= Integer.parseInt(savedText)){
//Integer btnId = mRes.getIdentifier(idOfButtons[position], "id", (this).getBaseContext().getPackageName());
//Button btn = (Button) findViewById(btnId);
//btn.setBackgroundColor(Color.BLUE);
}
}
Вот так не вылетает
Код: Выделить всё
for (int position = 1; position <= Constants.k; position++) {
if (position <= Integer.parseInt(savedText)){
Integer btnId = mRes.getIdentifier(idOfButtons[position], "id", (this).getBaseContext().getPackageName());
//Button btn = (Button) findViewById(btnId);
//btn.setBackgroundColor(Color.BLUE);
}
}
Вот так вылетает
__
Сейчас вообще эмулятор тупит, наверное, надо на IDEA переходить..
__
Решение для время в логах нашел -
http://stackoverflow.com/questions/8298 ... -change-it, сейчас попробую.
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 22:06
Mr. Nobody
Установил IDEA, вот логи
Код: Выделить всё
08-24 15:03:53.142: ERROR/AndroidRuntime(1781): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.kros/com.example.kros.LevelActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
at android.app.ActivityThread.access$600(ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at com.example.kros.LevelActivity.onCreate(LevelActivity.java:125)
at android.app.Activity.performCreate(Activity.java:5133)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
... 11 more
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 22:37
Foenix
цитирую себя из другой темы
Foenix писал(а):NPE самая легкая ошибка.
Смотри.
находишь в логе вот такую строчку после строки Caused by:
с адресом в ТВОЕЙ программе, т.е.
at com.example.p0421_simplelist.MainActivity.onCreate(MainActivity.java:26)
щелкаешь сюда 2 раза мышью, и переносишься в код. На этой строке у тебя ИСПОЛЬЗУЕТСЯ переменная, которая не инициализировалась (не создана). А теперь смотришь в код выше данной строки, где она создается.
Там и ошибка. или адрес неверный (например, ресурс xml не найден) или вообще она нигде у тебя не создается, зато используется потом.
Попробуй сам найти.
у тебя это соответственно строчка в логе
at com.example.kros.LevelActivity.onCreate(LevelActivity.java:125)
Re: Неактивные кнопки циклом
Добавлено: 24 авг 2013, 23:34
Mr. Nobody
Код: Выделить всё
Integer btnId = mRes.getIdentifier("level_17", "id", (this).getBaseContext().getPackageName());
mRes есть
Массив убрал для проверки, просто написал строкой один id - "level_17" => все ок
остается
, не очень понимаю эту строку, но, судя по примеру, тут тоже все верно.
Re: Неактивные кнопки циклом
Добавлено: 25 авг 2013, 00:01
Foenix
различай - объявление переменной Resources mRes
от ее создания
mRes = mContext.getResources();
ты же пытаешься ею воспользоваться, причем ее свойствами, или методами, но после объявления задан только ее тип, а содержания в ней нет - null. И ты из этого null пытаешься вытянуть какую-то информацию getIdentifier
а?
Re: Неактивные кнопки циклом
Добавлено: 25 авг 2013, 00:42
Mr. Nobody
Вы лучшая!)
Спасибо, все отлично работает
Re: Неактивные кнопки циклом
Добавлено: 25 авг 2013, 01:14
Foenix
засмущал