Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

ошибка calledfromwrongthreadexception - Программирование Android

19.01.2014, 04:53. Просмотров 557. Ответов 6
Метки нет (Все метки)

всем привет
вот не пойму у меня есть класс какой принимает с сервера это поток (он работает бесконечно)вкл после соединения с сервером
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Receive implements Runnable
{
    public void run()
    {
while(true)
        {
         
         try 
         {
            
             byte[] mybytearray = new byte[1024];
             InputStream is = MainActivity.client.getInputStream(); 
            
             int bytesRead = is.read(mybytearray, 0, mybytearray.length);
            
            if(bytesRead>=1)
            {
                String dan = new String( mybytearray, 0,bytesRead);
                    Stack_1.R.push(dan);
                    }
         }
         catch (IOException e) {}   
       }
    }
    }
потом я в таймере принимаю
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
 public void r()
      {
          timer.schedule(new YourTimerTask(), 0, 1000);
      }
      public class YourTimerTask extends TimerTask
      {
          @Override
        public void run() 
        {
            if(Stack_1.R.empty()==false)
            {
                String person=Stack_1.R.pop();
                r2(person);
                Stack_1.R.clear();
                timer.cancel();
            }
        }
        
      }
      public void r2(String text)
      {
          te.setText(text);
      }
и у меня ошибка android.view.ViewRoot$CalledFromWrongThreadException
как так? ошибка видно когда я делаю te.setText(text); или r2(person);
я не могу изменять текст в элементах ? или как это обойти

Добавлено через 8 минут
или не могу изменять из за потока или за чего ,или из за другого потока,как решить
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
19.01.2014, 04:53
Здравствуйте! Я подобрал для вас темы с ответами на вопрос ошибка calledfromwrongthreadexception (Программирование Android):

IIS- asp ошибка: HTTP 500.100 - Внутренняя ошибка сервера - ошибка ASP Internet Information Services - C# ASP.NET
Привет! Конфигурация win2000pro sp2, стандартный IIS, IE 5. При попытке обратиться к сценарию(asp) получаю ошибку: <пропуск> ......

1C 8.x Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове метода контекста (ПрочитатьИзменения): Ошибка записи! - 1С
Доброго всем времени суток! подскажи пожалуйста как исправить ошибку: Ошибка при чтении изменений при обмене РИБ: Ошибка при вызове...

Ошибка при добавлении в файл. Ошибка 101: Ошибка записи на диск (Error 101: Disk write error). - Turbo Pascal
Здравствуйте, возникла проблема такого плана. Нужно произвести добавление записи в файл, но после успешного создания и чтения вылазиет...

Ошибка разбора XML/ Ошибка при вызове метода контекста (Прочитать) - 1С
1C 8.2 Документооборот КОРП 1.2 Текст ошибки {ОбщийМодуль.АвтозаполнениеШаблоновФайловКлиентСервер.Модуль(616)}: Ошибка при вызове...

Server 2003 Загружается до окна приветствия и вылетает ошибка: isass.exe - Системная ошибка - Windows Server
Ребята, помогите кто может... весь день бьюсь безрезультатно... с утра пришёл на работу а сервак не пингуется... загружается до...

Django Ошибка доступа (403) Ошибка проверки CSRF. Запрос отклонён - Python
На хостинге разместил сайт и не могу войти в админку, т.к. возникает 403 ошибка "Ошибка доступа (403). Ошибка проверки CSRF. Запрос...

6
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
19.01.2014, 13:19 #2
Цитата Сообщение от TRIUMF Посмотреть сообщение
или не могу изменять из за потока или за чего ,или из за другого потока,как решить
Взаимодействие с компонентами графического интерфейса осуществляется только из главного потока, в противном случае возникнет эта ошибка о которой вы писали.
Цитата Сообщение от TRIUMF Посмотреть сообщение
как это обойти
Есть несколько способов. Например можно так:
Java
1
2
3
4
5
6
7
        te.post(new Runnable() {
            @Override
            public void run() {
                //это всегда выполняется в главном потоке
                te.setText("test");
            }
        });
0
TRIUMF
1 / 1 / 0
Регистрация: 14.03.2013
Сообщений: 103
19.01.2014, 15:51  [ТС] #3
angryrobot, это мне теперь в методе писать
Java
1
2
3
4
5
6
7
8
9
10
11
      public void r2(final String text)
      {
          te.post(new Runnable() {
                @Override
                public void run() {
                    //это всегда выполняется в главном потоке
                    te.setText(text);
                }
            });
      }
      }
так что ли?

Добавлено через 15 секунд
angryrobot, это мне теперь в методе писать
Java
1
2
3
4
5
6
7
8
9
10
11
      public void r2(final String text)
      {
          te.post(new Runnable() {
                @Override
                public void run() {
                    //это всегда выполняется в главном потоке
                    te.setText(text);
                }
            });
      }
      }
так что ли?

Добавлено через 52 секунды
angryrobot, а какие есть ещё способы
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
19.01.2014, 15:54 #4
Цитата Сообщение от TRIUMF Посмотреть сообщение
так что ли?
Да именно так. Заработало у вас ?

Добавлено через 1 минуту
Цитата Сообщение от TRIUMF Посмотреть сообщение
а какие есть ещё способы
У активити есть метод runOnUiThread туда нужно передать ссылку на Runnable и код внутри метода run будет исполнен в main потоке. Т.е. суть та же самая.
0
TRIUMF
1 / 1 / 0
Регистрация: 14.03.2013
Сообщений: 103
19.01.2014, 16:23  [ТС] #5
angryrobot, что то не работает как вы сказали он пустой становиться когда делаю te.setText(text); но там есть текст

Добавлено через 1 минуту
angryrobot, работает спасибо

Добавлено через 28 секунд
angryrobot, работает спасибо

Добавлено через 2 минуты
angryrobot, только второй раз когда я вызываю таймер ,то что я писал выше он мне ошибку выддаёт java.lang.IllegalStateException: Timer was canceled
0
angryrobot
Командир зеленых роботов
348 / 285 / 53
Регистрация: 08.10.2013
Сообщений: 564
19.01.2014, 17:51 #6
Цитата Сообщение от TRIUMF Посмотреть сообщение
только второй раз когда я вызываю таймер ,то что я писал выше он мне ошибку выддаёт
Насколько я помню, когда таймер уже был остановлен вызовом метода cancel, его нельзя заново запустить. Нужно его пересоздавать заново.
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
19.01.2014, 21:15 #7
TRIUMF, angryrobot, пересоздавать надо TimerTask, а не Timer. TimerTask имплементит Runnable. Как и Thread. И если сделать interrupt потоку/cancel TimerTask - надо пересоздавать.
0
19.01.2014, 21:15
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
19.01.2014, 21:15
Привет! Вот еще темы с ответами:

Interbase Ошибка SQL запроса , в базе работает, а через IBQuery в Delphi ошибка - Delphi БД
В Combobox загружены имена организаций. Нужно выполнить запрос на вывод всех полей таблицы организаций при выборе имени в Combobox. При...

ASP: Response.Redirect - не работает, ошибка `500 - Внутренняя ошибка сервера' - C# ASP.NET
Всем привет! Есть в ASP-сраничке такой код: Response.Redirect 'page1.asp?ReturnTo=page2.asp' Эта конструкция работала на IIS 4,...

Ошибка HTTP 500 - внутреняя ошибка сервера при отправке почты. - C# ASP.NET
Я пытаюсь отправить почту и присоединяю к ней письма Вот часть страницы Dim myMail Set myMail = CreateObject('CDONTS.NewMail') ...

.NET 4.x Ошибка перезаписи файла: В GDI+ возникла ошибка общего вида - Visual Basic .NET
Написал небольшой граф редактор в visual studio 2013. Когда сохраняю файл с таким же именем, вылазит окошко о подтверждении перезаписи....


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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