Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.69
Evg64
2 / 2 / 0
Регистрация: 30.07.2011
Сообщений: 7
#1

Почему все падает, если раскомментить строку tv.append(" extra"); ? - Программирование Android

07.08.2011, 22:04. Просмотров 1680. Ответов 6
Метки нет (Все метки)

Добрый день! Хочу сделать так, чтобы приложение с интервалом в 0,5 сек выводило цифры в столбик (изучаю андроид).
Написал такой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
public class AndroidTestActivity extends Activity {
    protected void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);
        new Thread(new Runnable(){
            public void run() {     
                TextView tv=(TextView) findViewById(R.id.hello);
                for (int i=1;i<5;i++){  
                    //tv.append(" extra");
                    try {Thread.sleep(500);} 
                    catch (InterruptedException e) {e.printStackTrace();}
                }
            }
        }).start();
    }
}
В таком виде работает, но если раскомментить строку //tv.append(" extra"); - все упадет.
Как вариант, можно закомментить конструкцию try-catch и раскомментить //tv.append(" extra");. Почему все падает, если раскомментить и то, и другое?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
07.08.2011, 22:04
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Почему все падает, если раскомментить строку tv.append(" extra"); ? (Программирование Android):

Работа с БД, связывание таблиц "фильмы", "жанры", "режиссеры"
Ребят, всем привет! накидайте какие-нить идеи по реализации ситуация такая...

Почему приложение может пропасть из "Похожие" топового приложения?
Ранее оно было на 2-ом месте, а теперь пропало вообще(то есть даже не отошло на...

Ошибка "Unknown method "e" of "org.apache.commons.logging.Log"
Unknown method 'e' of 'org.apache.commons.logging.Log' package...

Как добавить строку "." в начале в ListView со своим обработчиком
Я в своей базе данных, на каждый новый каталог, дополнительно добавляю запись...

Notification вывод строки с символами перехода на новую строку "\n"
Здравствуйте, пишу приложение для android 4. В нем service выводит...

Постепенно вывести на экран слово "Java", в котором буквы состоят из "интересных" элементов
Я учусь в универе и вот пытаюсь делать лабораторные по языку java, только на...

6
petruchodd
126 / 123 / 19
Регистрация: 23.06.2009
Сообщений: 662
09.08.2011, 13:03 #2
на будущее ... есть логи.. где пишуться ошибки. Поверь люди будут быстрей помогать - если будешь вылаживать ошибки, а не "упала/упал" Падает потому что ты пытаешься изменить GUI с потока. (append)Стандартный путь зделать это использовать хандлер (handler)
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
26
27
28
29
public class sss extends Activity {
      TextView tv;
    protected void onCreate(Bundle icicle) {
            super.onCreate(icicle);
            LinearLayout ll = new LinearLayout(this);
           tv=new TextView(this);
            ll.addView(tv);
            setContentView(ll);
            tv.setTextColor(Color.WHITE);
            new Thread(new Runnable(){
                    public void run() {             
                           
                            for (int i=1;i<5;i++){  
                                Message message = handler.obtainMessage();
                                handler.sendMessage(message);
                                    try {Thread.sleep(500);} 
                                    catch (InterruptedException e) {e.printStackTrace();}
                            }
                    }
            }).start();
    }
    
    Handler handler = new Handler() {
        @Override
        public void handleMessage(Message message) {
           tv.append("extra\n"); /// \n что бы в столбик
        }
    };
}
не обращай внимания на создание.. пишу всегда без xml поэтому код программный без лайоутов. Ну и как всегда.... учи английский и читай туториалы. Потому что без них туго очень.
1
Evg64
2 / 2 / 0
Регистрация: 30.07.2011
Сообщений: 7
11.08.2011, 23:34  [ТС] #3
Спасибо.

1) А есть способ передавать хэндлеру переменные (из того места, где хэндлер вызывается)?
2) Я не понял: почему нельзя менять GUI с потока? Это базовые принципы андроида? А чем это объясняется?
3) Насчет логов: имеется в виду Logcat? В этом Logcat сам черт ногу сломит. Я свой приаттачил для примера. Если кто ткнет носом, как с помощью этого набора букв () можно было идентифицировать проблему самостоятельно, буду оч. благодарен.
1
Вложения
Тип файла: txt logcat.txt (17.4 Кб, 85 просмотров)
petruchodd
126 / 123 / 19
Регистрация: 23.06.2009
Сообщений: 662
12.08.2011, 12:09 #4
Цитата Сообщение от Evg64 Посмотреть сообщение
Спасибо.

1) А есть способ передавать хэндлеру переменные (из того места, где хэндлер вызывается)?
2) Я не понял: почему нельзя менять GUI с потока? Это базовые принципы андроида? А чем это объясняется?
3) Насчет логов: имеется в виду Logcat? В этом Logcat сам черт ногу сломит. Я свой приаттачил для примера. Если кто ткнет носом, как с помощью этого набора букв () можно было идентифицировать проблему самостоятельно, буду оч. благодарен.
1. Врать не буду, не знаю. Но что мешает обьявить глабально и использовать эту переменную ?
2. Тут тяжело обьяснить. Если кратко ... то так написано на форумах, туториалах и всяких гайдах)
примерная вырезка
XML
1
2
3
4
5
6
7
If you need to update the UI from a background task you need to use some Android specific classes. You can use the class "android.os.Handler" for this or the class "AsynTasks".
 
2.2. Handler
 
The class "Handler" can update the UI. A handle provides methods for receiving messages and for runnables. To use a handler you have to subclass it and overide handleMessage() to process messages. To process runables you can use the method post(); You only need one instance of a handler in your activity.
 
You thread can post messages via the
3. да именно логкат. В вашем логе и я ногу сломал, вот теперь только сидеть могу. Вот в этой теме я давал ссылки на DDMS и как работать в логкате. Почитайте : кибер форум
1
Evg64
2 / 2 / 0
Регистрация: 30.07.2011
Сообщений: 7
13.08.2011, 18:39  [ТС] #5
1) А, ну да, тут решили)
2) Ок, приму как факт и все)
3) Видимо не время мне еще просто логкат понимать, не привык я пока к нему.
0
petruchodd
24.08.2011, 05:18
  #6

Не по теме:

Почему не время ?) Вам не нужно всё читать, читать начнете пожже, а для начала если только учитесь или что то в єтом роде, вам достаточно научиться смотреть ошибку там .Когда ваше апп вылетает, всё можна найти там. Зачастую это огромный блок(от 5 до 20- и до огого строк в столбец). Там россписано, что от какого файла куда обратилось и где начало ломаться. Этого вам будет достаточно что бы быстрей учиться.

1
Evg64
2 / 2 / 0
Регистрация: 30.07.2011
Сообщений: 7
24.08.2011, 21:54  [ТС] #7
Ну понимание таких вещей, как логкат, со временем приходит, это нормально.
Например, сейчас я уже регулярно смотрю там ошибки и зачастую именно оттуда выясняю, в чем проблема. А со временем, еще лучше буду разбираться. Мне кажется, это почти у всех так происходит.
0
24.08.2011, 21:54
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.08.2011, 21:54
Привет! Вот еще темы с решениями:

Выбор платформы разработки "1С Мобильная платформа" или "Android Studio"
Всем, здравствуйте! Есть задача по разработке клиента для терминала сбора...

При эмулировании вместо надписи "Hello world" отображается "android"
Привет форумчане! Я только-только начинал программировать на андроиде. Поставил...

Как "превратить" string "6.971245e-001" во float?
Число конечно пример

Как прикрутить "свой браузер" к странице - "фрагмент"
здравствуйте. все, уже голову сломал. не соображаю совсем. не получается...


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

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

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