Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Android > Как работать с textView.setText ?


Автор: gesper 1.11.2013, 00:33
Сделал программу которая выводит смс с определенного номера в свой список. Программа это три фрагмента, которые через табы листаются.
Список находится на втором фрагменте и загружается при создании этого фрагмента, все работает и хорошо. На первом фрагменте есть TextView, я во время загрузки сделал проверку смс по дате и последнее смс запоминается в переменных и должно отобразится на первом фрагменте. Ниже приведен код этого действия.

Код

String lastMessageBody="123456";

LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View mainView = inflater.inflate(R.layout.fragment_main, null);
        TextView textViewBody = (TextView) mainView.findViewById(R.id.textView2);
        textViewBody.setText(lastMessageBody); 


Я прогнал работу кода через отладчик при подключенном мобильнике, находится этот textview, отображается содержимое его("Пока нет смс") в отладчике, вижу как заменяется текст, на новый из СМС. Но как только я смотрю на экран телефона текст остается прежним, как будто ничего не происходит и без глюков все работает дальше. Что за прикол?
Пробовал это же код вытащить из функции в Активность основную, и при ее запуске импровизированный текст передать в компонент, тоже ноль эмоций. Но в отсальных местах, аналогичным способом текс почему то вставляется в нужные части экрана, что я пропустил?

Автор: vladpartner2 26.11.2013, 18:40
Тот же вопрос

Автор: Felan 29.11.2013, 19:04
Вообще setText вроде просто выполняется как есть... 

В качестве телепатии (а то не понятно, что потом происходит с контролами):

МОжет быть у тебя не та версия текствью?
Инфлейтер создает новые экземпляры контролов. Т.е. после того как их "заинфлейтер" их надо добавить на контрол родитель... Если текст вью прописан в лейауте, то получается, что показывается один экземпляр текствью, который из лейаута, а текст выставляется другому, который поулчен вручную через инфлейтор...

Может быть как-то так...

Автор: ShellRaiser 23.12.2013, 17:15
пробовали сетать значение из onActivityCreated метода?

 smile 
Цитата

View mainView = inflater.inflate(R.layout.fragment_main, null);


1) onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) уже передает вам инфлейтер
2) inflater.inflate(R.layout.fragment_main, container, false) - правильнее инфлейтить так (в листвью намучаетесь если захотите добавиь паддинги и будете инфлейтить айтемы без указания парента, пока не поймете в чем проблема)

Добавлено через 1 минуту и 57 секунд
Можно более развернутый кусок кода?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)