Использование хешмапа слабого ссылочного подхода, описанного выше, и в http://developer.android.com/guide/faq/framework.html кажется проблематичным для меня. Как восстанавливаются целые записи, а не только значение карты? В какой области вы его распределяете? Поскольку инфраструктура контролирует жизненный цикл Activity, при наличии одной из участвующих в ней Деяний, она подвергает риску ошибки времени выполнения, когда владелец уничтожается до своих клиентов. Если приложение принадлежит ему, некоторые действия должны явно удалить запись, чтобы избежать того, чтобы хэш-файл не включался в записи с действительным ключом и потенциально сфальсифицированной собранной слабой ссылкой. Кроме того, что должен делать клиент, когда значение, возвращаемое для ключа, является нулевым?
Мне кажется, что WeakHashMap, принадлежащий Приложению или в одном сингле, является лучшим выбором. Доступ к значению на карте осуществляется с помощью ключевого объекта, и когда нет сильных ссылок на ключ (т. Е. Все действия выполняются с ключом и на что он сопоставляется), GC может восстановить запись карты.
Я не уверен на 100%, но вы вызываете findviewbyid в инициализации класса. Я думаю, что этот код вызывается перед методом onCreate, поэтому вид не может быть найден. Инициализация слушателей в методе oncreate должна работать.
нет проблем с вашими кодами, по праву все должно работать в соответствии с нормальным.
Самая распространенная ошибка столкновения с методом null через findViewById()
- это когда вы забыли позвонить setContentView()
или вызвали это для неправильной компоновки.
Я предлагаю очистить ваш проект и попробовать еще раз !!!!
У меня были те же проблемы, но после очистки моего проекта и запуска его снова он отлично работает.