Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.86/7: Рейтинг темы: голосов - 7, средняя оценка - 4.86
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
1

TextWatcher. При добавлении в проект вылет

02.03.2016, 13:35. Показов 1459. Ответов 17
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Доброго времени суток. На активити есть EditText, хочу добавить в проект обработчик изменения текста в этом элементе. Во всемогущем интернете нашел способ - добавление слушателя TextWatcher к элементу EditText. Делаю таким образом:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
EditText enter1 = (EditText)findViewById(R.id.editText);
 
        TextWatcher tw1 = new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
 
            }
 
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
 
            }
 
            @Override
            public void afterTextChanged(Editable s) {
 
            }
        };
 
 
        enter1.addTextChangedListener(tw1);
Если отладчиком пробегать, то на последней строке зависает. Подскажите, может какой import нужно? В чем косяк?

Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
02.03.2016, 13:35
Ответы с готовыми решениями:

Отключение TextWatcher при редактировании текста программно
Решив сделать подсветку синтаксиса в приложении, столкнулся с проблемой зацикливания в одном...

Несколько Textwatcher
Не считает несколько TextWatcher, помогите. import android.os.Bundle; import...

Вылет при фотографировании
Давно пытаюсь словить эту проблему: вылетает приложение 1 раз на ~50 снимков - takePicture failed....

Вылет во время запуска при подключении динамических библиотек в проект с подпроектами
Здравствуйте! Я создал проект с поддиректориями на Qt (qt 5.4.1, mingw). У меня есть несколько qt...

17
32 / 32 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
02.03.2016, 19:53 2
Kverza, ваш код работает. Я в onTextChange прописал щас System.out.println("Работает") и в консоли при редактировании текста выводится соответствующее сообщение. В какой части программы вы его пишете?
Вы всё импортировали, что предложила студия? (Alt+Enter)
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
02.03.2016, 23:20  [ТС] 3
Этот код вставлен в метод protected void onCreate(Bundle savedInstanceState) класса MainActivity. Импорт сделал, результат тот же.
0
32 / 32 / 3
Регистрация: 25.05.2014
Сообщений: 1,137
03.03.2016, 07:22 4
Kverza, попробуйте сейчас пересоздать проект, и если ошибка повторится, скопируйте её текст сюда
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
03.03.2016, 12:20 5
Цитата Сообщение от danek130995 Посмотреть сообщение
если ошибка повторится, скопируйте её текст сюда
Действительно, вопрос про ошибку без лога ошибки выглядит как предложение найти монетку в сундуке, если сундук закопан неизвестно где.
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
04.03.2016, 18:37  [ТС] 6
Получил ошибку

03-04 18:28:44.586 7634-7634/com.example.nafnaf.laba3v5 D/MyLog: Attempt to invoke virtual method 'void android.widget.EditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference

Получается мало сделать
Java
1
 EditText enter1 = (EditText) findViewById(R.id.editText);
Надо еще как то объект инициализировать?
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 654
05.03.2016, 11:00 7
Цитата Сообщение от Kverza Посмотреть сообщение
EditText enter1 = (EditText) findViewById(R.id.editText);
Эта строка должна быть в методе onCreate() (за "пределами" ватчера), и попробуйте
Java
1
 final EditText enter1 = (EditText) findViewById(R.id.editText);
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
05.03.2016, 15:39  [ТС] 8
а еще вопрос - на фрагментах это работать будет? а то для фрагментов есть некоторые ограничения
0
Vladimirys
05.03.2016, 21:08
  #9

Не по теме:

Вот как вы думаете, если бы те, кто запускал первого человека в космос, для начала, хотели бы кого нибудь спросить - ну че как там? Запустили бы?
У вас все гораздо проще, взяли, попробовали и увидели результат. Ну нельзя программисту быть таким ленивым.

0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
05.03.2016, 22:46  [ТС] 10
Все предложенные варианты я попробовал, но результат остался абсолютно идентичным. А какие мысли приходят, то и спрашиваю
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.03.2016, 00:03 11
Цитата Сообщение от Kverza Посмотреть сообщение
Все предложенные варианты я попробовал, но результат остался абсолютно идентичным.
Непонятно, работает теперь или нет.
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
06.03.2016, 00:11  [ТС] 12
Приложение теперь не вылетает, но реакцию, которую добиваюсь, ее нет. Ожидаю, что появится запись в логе при изменении текста в TextEdit. Но ничего абсолютно не появляется.
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.03.2016, 13:07 13
Kverza, вы пробовали прописывать вывод в лог в событии afterTextChanged или onTextChanged?
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
06.03.2016, 13:11  [ТС] 14
я пробовал в этих событиях поменять текст на кнопке, для наглядности. Но название кнопки не менялось
0
426 / 406 / 68
Регистрация: 06.10.2012
Сообщений: 1,748
06.03.2016, 13:25 15
Цитата Сообщение от Kverza Посмотреть сообщение
я пробовал в этих событиях поменять текст на кнопке, для наглядности. Но название кнопки не менялось
Как с вами сложно! Вы бы хоть код приводили бы!
0
2 / 2 / 0
Регистрация: 29.10.2015
Сообщений: 46
06.03.2016, 14:36  [ТС] 16
Я начал разбираться с самого начала. Создал проект с Tabblet Activity. Добавил еще два layout. Предполагается работа с фрагментами. Их 3 - main, first, second.
Далее MainActivity. Автоматом генерируется код. В этом коде есть класс PlaceholderFragment. В методе onCreateView этого класса прописал следующее

Java
1
2
3
4
5
6
7
8
9
10
View rootView=null;
            switch (getArguments().getInt(ARG_SECTION_NUMBER))
            {
                case 1:rootView = inflater.inflate(R.layout.fragment_main, container, false);
                    break;
                case 2:rootView = inflater.inflate(R.layout.fragment_first, container, false);
                    break;
                case 3: rootView = inflater.inflate(R.layout.fragment_second, container, false);
                    break;
            }
Ожидаю, что этот код будет при выборе второй секции подсовывать fragment_first, а вместо третьей - fragment_second. Если не делать никаких обработчиков, то все прекрасно получается. Приложение компилируется, запускается на телефоне, и при свайпе в стороны получает нужный lauout.

Далее пытаюсь сделать обработчик изменения текста в текстовом поле. Делаю это так: в метод OnCreate класса MainActivity добавляю код (в самый конец метода)
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
EditText et = (EditText)findViewById(R.id.editText);
        final Button but = (Button)findViewById(R.id.button);
 
        TextWatcher tw1 = new TextWatcher() {
            @Override
            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
                but.setText("WWW");
            }
 
            @Override
            public void onTextChanged(CharSequence s, int start, int before, int count) {
                but.setText("WWW");
            }
 
            @Override
            public void afterTextChanged(Editable s) {
                but.setText("WWW");
            }
        };
 
        et.addTextChangedListener(tw1);*/
Ожидаю, что при изменении текста на fragment_main изменится заголовок кнопки, но приложение вылетает с ошибкой

Java
1
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.nafnaf.tmp4/com.example.nafnaf.tmp4.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.EditText.addTextChangedListener(android.text.TextWatcher)' on a null object reference
Хотя editText определил же. Почему так?
0
266 / 242 / 96
Регистрация: 11.01.2015
Сообщений: 673
06.03.2016, 15:12 17
Kverza, как я понял, EditText у тебя во фрагменте, а ищешь ты его и вешаешь обработчик в MainActivity. Если так, то понятно почему не работает.
EditText искать и вешать слушателя нужно там где он расположен(во фрагменте).
0
2883 / 2295 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
07.03.2016, 12:15 18
XML
1
final Button but = (Button)view.findViewById(R.id.button);
где view это фрагмент, подразумевается что эта строка написана в onCreateView фрагмента
0
07.03.2016, 12:15
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.03.2016, 12:15
Помогаю со студенческими работами здесь

Отличия при добавлении изображений в проект
Столкнулся с такими методами загрузки изображений, 1й это отдельно картинку загружать var...

Запуск своего ассистента при добавлении элемента в проект
у меня есть проект, в котором генерируются некие классы. Эти классы сохраняются как *.cs файлы в...

Access violation at adress при добавлении формы в проект
При попытке перехода на форму с добавлением данных выбивает вот такую ошибку (скрин прилагается),...

Ошибка при добавлении элемента Windows Forms в проект С++
Всё сделал как сказано в этой инструкции с сайта cyberforum.ru, но после добавления формы в проет...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
18
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru