Неактивные кнопки циклом

Интерфейс, диалоги, темы, стили, меню
Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Неактивные кнопки циклом

Сообщение Mr. Nobody » 18 авг 2013, 17:14

У меня есть 20 кнопок с id от level_1 до level_20
Подскажите, пожалуйста, как мне первые 10 кнопок сделать неактивными

Код: Выделить всё

for (int i=1; i <= 10; i++){
	    	String namebutton = "level_" + Integer.toString(i);
	    	namebutton.setEnabled(false);
	    }
Что-то вроде этого, но, естественно это не работает, так как там строка.

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Неактивные кнопки циклом

Сообщение xr0m » 18 авг 2013, 20:02

Eval аналог? Не, нету. Используй массив кнопок

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Неактивные кнопки циклом

Сообщение Foenix » 18 авг 2013, 20:19

я тебе ссылку давала, ты ее проигнорировал.
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 18 авг 2013, 20:53

Foenix писал(а):я тебе ссылку давала, ты ее проигнорировал.
Ссылку не видел, скиньте, пожалуйста, еще раз

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 18 авг 2013, 20:55

По аналогу с прошлым моим вопросом должно быть что-то такое

Код: Выделить всё

	    for (int i=1; i <= Constants.k; i++){
	    	String namebutton = "level_" + Integer.toString(i);
	    	int fullnamebutton = getResources().getIdentifier(namebutton, "drawable", getPackageName());
	    	fullnamebutton.setEnabled(false);
	    }

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Неактивные кнопки циклом

Сообщение Mikhail_dev » 18 авг 2013, 20:58

А можно поинтересоваться, зачем 20 кнопок? Если это калькулятор, то что мешает по ID к ним обратиться? Или они созданы динамически? Если да, то что мешало создать статически? =)

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 18 авг 2013, 21:00

Это выбор уровня в игре, есть некое число K (сколько уровней из 20 пройдено), вот и нужно помечать пройденные K уровней :)

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Неактивные кнопки циклом

Сообщение xr0m » 18 авг 2013, 21:20

no-- писал(а):А можно поинтересоваться, зачем 20 кнопок? Если это калькулятор, то что мешает по ID к ним обратиться? Или они созданы динамически? Если да, то что мешало создать статически? =)
20 однотипных статичных переменных? Мде... на скорость не повлияет, но качество и читабельность программы упадет.

Для уровней используй линк лист.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Неактивные кнопки циклом

Сообщение Foenix » 18 авг 2013, 21:28

Ссылка в прошлой твоей теме про кнопки и их id
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 24 авг 2013, 12:35

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);
		   }
		}
Вложения
2013.08.24-13.34.47.png
2013.08.24-13.34.47.png (1.81 КБ) 12236 просмотров
2013.08.24-13.34.23.png
2013.08.24-13.34.23.png (10.22 КБ) 12236 просмотров

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Неактивные кнопки циклом

Сообщение Foenix » 24 авг 2013, 12:56

да потому что этот метод для фрагмента, а ты находишься в активити, используй this
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 24 авг 2013, 14:45

Спасибо, при запуске вылетает

Код: Выделить всё

	Resources mRes;
	String[] idOfButtons;
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

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Неактивные кнопки циклом

Сообщение Foenix » 24 авг 2013, 15:53

а ошибку привести забыл, всегда нужно лог давать
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 24 авг 2013, 18:48

Да я хотел, но у меня почему-то логи не ведутся, я не знаю в чем дело
в 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, сейчас попробую.

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 24 авг 2013, 22:06

Установил 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

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Неактивные кнопки циклом

Сообщение Foenix » 24 авг 2013, 22:37

цитирую себя из другой темы
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)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 24 авг 2013, 23:34

Код: Выделить всё

Integer btnId = mRes.getIdentifier("level_17", "id", (this).getBaseContext().getPackageName());
mRes есть

Код: Выделить всё

Resources mRes;
Массив убрал для проверки, просто написал строкой один id - "level_17" => все ок

остается

Код: Выделить всё

(this).getBaseContext().getPackageName()
, не очень понимаю эту строку, но, судя по примеру, тут тоже все верно.

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Неактивные кнопки циклом

Сообщение Foenix » 25 авг 2013, 00:01

различай - объявление переменной Resources mRes
от ее создания
mRes = mContext.getResources();
ты же пытаешься ею воспользоваться, причем ее свойствами, или методами, но после объявления задан только ее тип, а содержания в ней нет - null. И ты из этого null пытаешься вытянуть какую-то информацию getIdentifier
а?
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Mr. Nobody
Сообщения: 40
Зарегистрирован: 22 апр 2013, 21:28

Re: Неактивные кнопки циклом

Сообщение Mr. Nobody » 25 авг 2013, 00:42

Вы лучшая!)
Спасибо, все отлично работает

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Неактивные кнопки циклом

Сообщение Foenix » 25 авг 2013, 01:14

засмущал ;)
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Ответить