Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
#1

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

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

Доброго времени суток. На активити есть 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 нужно? В чем косяк?

Спасибо
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
02.03.2016, 13:35     TextWatcher. При добавлении в проект вылет
Посмотрите здесь:

Несколько Textwatcher - Программирование Android
Не считает несколько TextWatcher, помогите. import android.os.Bundle; import android.app.Activity; import...

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

Вылет при нажатии кнопки - Программирование Android
Доброго времени суток. Опять непонятная ошибка, при нажатии кнопки приложение вылетает. Вот ошибка: java.lang.IllegalStateException:...

Вылет при переходе на второй активити - Программирование Android
Подключал библиотеку android-support-v7-appcompat, но на неё, кажется, не жалуется(крестиков не видно). MainActivity.java package...

Вылет приложения при работе с jsoup - Программирование Android
приложение вылетает на строках : String html = "<html>Some html text</html>"; Document doc = Jsoup.parse(html);либу пробовал по разному...

Canvas-игра. Вылет при сворачивании - Программирование Android
public class GameView extends SurfaceView { private GameThread mThread; SurfaceHolder holder; Bitmap fon =...

Вылет при выролнении объемной задачи в AsyncTask - Программирование Android
Добрый день, Столкнулся с одной проблемой и не пойму с какой стороны искать решение. Приложение при первоначальном запуске...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
02.03.2016, 19:53     TextWatcher. При добавлении в проект вылет #2
Kverza, ваш код работает. Я в onTextChange прописал щас System.out.println("Работает") и в консоли при редактировании текста выводится соответствующее сообщение. В какой части программы вы его пишете?
Вы всё импортировали, что предложила студия? (Alt+Enter)
Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
02.03.2016, 23:20  [ТС]     TextWatcher. При добавлении в проект вылет #3
Этот код вставлен в метод protected void onCreate(Bundle savedInstanceState) класса MainActivity. Импорт сделал, результат тот же.
danek130995
23 / 23 / 1
Регистрация: 25.05.2014
Сообщений: 850
03.03.2016, 07:22     TextWatcher. При добавлении в проект вылет #4
Kverza, попробуйте сейчас пересоздать проект, и если ошибка повторится, скопируйте её текст сюда
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
03.03.2016, 12:20     TextWatcher. При добавлении в проект вылет #5
Цитата Сообщение от danek130995 Посмотреть сообщение
если ошибка повторится, скопируйте её текст сюда
Действительно, вопрос про ошибку без лога ошибки выглядит как предложение найти монетку в сундуке, если сундук закопан неизвестно где.
Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
04.03.2016, 18:37  [ТС]     TextWatcher. При добавлении в проект вылет #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);
Надо еще как то объект инициализировать?
Vladimir93
36 / 36 / 4
Регистрация: 28.06.2015
Сообщений: 146
05.03.2016, 11:00     TextWatcher. При добавлении в проект вылет #7
Цитата Сообщение от Kverza Посмотреть сообщение
EditText enter1 = (EditText) findViewById(R.id.editText);
Эта строка должна быть в методе onCreate() (за "пределами" ватчера), и попробуйте
Java
1
 final EditText enter1 = (EditText) findViewById(R.id.editText);
Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
05.03.2016, 15:39  [ТС]     TextWatcher. При добавлении в проект вылет #8
а еще вопрос - на фрагментах это работать будет? а то для фрагментов есть некоторые ограничения
Vladimirys
05.03.2016, 21:08
  #9

Не по теме:

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

Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
05.03.2016, 22:46  [ТС]     TextWatcher. При добавлении в проект вылет #10
Все предложенные варианты я попробовал, но результат остался абсолютно идентичным. А какие мысли приходят, то и спрашиваю
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
06.03.2016, 00:03     TextWatcher. При добавлении в проект вылет #11
Цитата Сообщение от Kverza Посмотреть сообщение
Все предложенные варианты я попробовал, но результат остался абсолютно идентичным.
Непонятно, работает теперь или нет.
Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
06.03.2016, 00:11  [ТС]     TextWatcher. При добавлении в проект вылет #12
Приложение теперь не вылетает, но реакцию, которую добиваюсь, ее нет. Ожидаю, что появится запись в логе при изменении текста в TextEdit. Но ничего абсолютно не появляется.
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
06.03.2016, 13:07     TextWatcher. При добавлении в проект вылет #13
Kverza, вы пробовали прописывать вывод в лог в событии afterTextChanged или onTextChanged?
Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
06.03.2016, 13:11  [ТС]     TextWatcher. При добавлении в проект вылет #14
я пробовал в этих событиях поменять текст на кнопке, для наглядности. Но название кнопки не менялось
CoolMind
418 / 401 / 65
Регистрация: 06.10.2012
Сообщений: 1,723
06.03.2016, 13:25     TextWatcher. При добавлении в проект вылет #15
Цитата Сообщение от Kverza Посмотреть сообщение
я пробовал в этих событиях поменять текст на кнопке, для наглядности. Но название кнопки не менялось
Как с вами сложно! Вы бы хоть код приводили бы!
Kverza
0 / 0 / 0
Регистрация: 29.10.2015
Сообщений: 42
06.03.2016, 14:36  [ТС]     TextWatcher. При добавлении в проект вылет #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 определил же. Почему так?
Mikalai
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
06.03.2016, 15:12     TextWatcher. При добавлении в проект вылет #17
Kverza, как я понял, EditText у тебя во фрагменте, а ищешь ты его и вешаешь обработчик в MainActivity. Если так, то понятно почему не работает.
EditText искать и вешать слушателя нужно там где он расположен(во фрагменте).
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
07.03.2016, 12:15     TextWatcher. При добавлении в проект вылет
Еще ссылки по теме:

Вылет приложения при запуске после загрузки шрифта - Программирование Android
Android Studio 2.3 В папке \app\src\main\ (рядом с манифестом) создал папку assets\fonts и положил файл ds-digit.TTF При добавлении...

Непонятный вылет приложения при установки значения в NumberPicker - Программирование Android
Доброго времени суток. Никак не получается не передать значение, ни получить значения NumberPicker. Программа вылетает при нажатии на...

Подскажите у кого происходит вылет при переходе на Activity - Программирование Android
java.lang.NullPointerException java.lang.RuntimeException: Unable to start activity...

Как в TextWatcher можно однозначно идентифицировать EditText, который меняется? - Программирование Android
Доброго времени суток. Я хотел бы поинтересоваться как в TextWatcher можно однозначно идентифицировать EditText, который меняется. Можно...

Вылет приложения при использования бокового меню. О чем говорят логи - Программирование Android
Помогите разобраться с ошибкой при работе с боковым меню. В лог выводит следующую информацию: 10-14 19:14:05.209:...


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

Или воспользуйтесь поиском по форуму:
Pablito
2411 / 1856 / 581
Регистрация: 12.05.2014
Сообщений: 6,591
Завершенные тесты: 1
07.03.2016, 12:15     TextWatcher. При добавлении в проект вылет #18
XML
1
final Button but = (Button)view.findViewById(R.id.button);
где view это фрагмент, подразумевается что эта строка написана в onCreateView фрагмента
Yandex
Объявления
07.03.2016, 12:15     TextWatcher. При добавлении в проект вылет
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru