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

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

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

Обработчик кнопки не работает - приложение компилируется, но крашится при запуске - Программирование Android

09.07.2016, 04:05. Просмотров 275. Ответов 2
Метки нет (Все метки)

Всем привет!
Собственно, проблема: у меня получилось сделать udp-listener за пару вечеров - слава яйцам!
Теперь я захотел добавить туда кнопку - нужно инкриментировать значение счётчика по нажатию кнопки
(вообще хочу массив, чтобы по нажатию кнопки в массив добавлялся новый элемент с текущим содержанием текста, полученного по udp, и по нажатию второй кнопки - либо сохрнять этот массив на диск, либо отправлять на почту через 3г - смотря что проще)
делал вот по этому тюториалу
http://simpledeveloper.com/how-to-build-simple-counter-android-app/
- та же фигня.
и при попытке запуска с изменённм кодом приложение компилируется ок, но крашится.
сейчас код main_activity.java выглядит вот так:
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
30
31
32
33
34
35
36
37
38
39
public class MainActivity extends Activity {
//    Button button;
    Button button = (Button) findViewById(R.id.button);
    Button button2;
    int counter = 0;
    TextView textViewLitres;
    TextView textViewADC;
    private String ip;
    private int port;
    static TextView tv;
    public static Handler UIHandler;
    static
    {
        UIHandler = new Handler(Looper.getMainLooper());
    }
    public static void runOnUI(Runnable runnable) {
        UIHandler.post(runnable);
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.textView1);
        new Thread(new ClientListen()).start();
button.setOnClickListener(this);
        //button2.setOnClickListener(this);
        button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View v) {
                //if(v==button){
                counter++;
                textViewLitres.setText(Integer.toString(counter));
                //    }
            }
        });
    }
 
}
если убрать строчку
button.setOnClickListener(this);
то приложение запускается, но и на клики не реагирует :-(

что в данном случае яляется this? по идее я это this указываю из того же места, что и в тюториале.
правда, есть вероятность, что кнопка лежит поверх какого-то другого элемента - это может вызвать такую ошибку?

Добавлено через 10 минут
на всякий случай, вот сообщение об ошибке:

07-09 03:00:09.470 17770-17770/com.example.red.udp_listener_test W/dalvikvm﹕ threadid=1: thread exiting with uncaught exception (group=0x416edd40)
07-09 03:00:09.472 17770-17770/com.example.red.udp_listener_test E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.red.udp_listener_test, PID: 17770
java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.example.red.udp_listener_test/com.example.red.udp_listener_test.MainActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2124)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
at android.app.ActivityThread.access$800(ActivityThread.java:139)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:136)
at android.app.ActivityThread.main(ActivityThread.java:5086)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at android.app.Activity.findViewById(Activity.java:1892)
at com.example.red.udp_listener_test.MainActivity.<init>(MainActivity.java:20)
at java.lang.Class.newInstanceImpl(Native Method)
at java.lang.Class.newInstance(Class.java:1208)
at android.app.Instrumentation.newActivity(Instrumentation.java:1084)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2115)
************at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2257)
************at android.app.ActivityThread.access$800(ActivityThread.java:139)
************at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1210)
************at android.os.Handler.dispatchMessage(Handler.java:102)
************at android.os.Looper.loop(Looper.java:136)
************at android.app.ActivityThread.main(ActivityThread.java:5086)
************at java.lang.reflect.Method.invokeNative(Native Method)
************at java.lang.reflect.Method.invoke(Method.java:515)
************at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:785)
************at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:601)
************at dalvik.system.NativeStart.main(Native Method)
07-09 03:00:11.436 17770-17770/? I/Process﹕ Sending signal. PID: 17770 SIG: 9


какое-то ZygoteInit...

Добавлено через 33 минуты
UPD
Нашел затык - объявил в самом начале класса правильно. а вот в onCreate надо было продублировать что ли - забыл.
Короче, теперь лучше - кнопка нажимается (знчение инкриментируется), но всё равно вылетает

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
30
31
32
33
34
35
36
37
38
39
public class MainActivity extends Activity implements OnClickListener {
    Button button;
    //Button button = (Button) findViewById(R.id.button);
    Button button2;
    int counter = 0;
    TextView textViewLitres;
    TextView textViewADC;
    private String ip;
    private int port;
    static TextView tv;
    public static Handler UIHandler;
    static
    {
        UIHandler = new Handler(Looper.getMainLooper());
    }
    public static void runOnUI(Runnable runnable) {
        UIHandler.post(runnable);
    }
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) findViewById(R.id.textView1);
        button = (Button) findViewById(R.id.button);
        new Thread(new ClientListen()).start();
 
        //button2.setOnClickListener(this);
        button.setOnClickListener(this);
    };
    @Override
    public void onClick(View v) {
        if(v==button){
        counter++;
            Log.d("button liters clicked", Integer.toString(counter));
        textViewLitres.setText(Integer.toString(counter));
            }
    };
}
на этот раз мешается строчка в обработчике onClick:
textViewLitres.setText(Integer.toString(counter));
и кажется, я даже догадываюсь, почему (странно, что он на этапе компиляции на это никак не ругается)
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.07.2016, 04:05
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Обработчик кнопки не работает - приложение компилируется, но крашится при запуске (Программирование Android):

Приложение крашится при попытке инициализировать searchview - Программирование Android
Кто может подсказать, что я делаю не правильно Приложение рушится на попытке инициализировать элемент SearchView на вот этой строчке ...

Крашится приложение при повторной загрузки изображения через галерею - Программирование Android
Привет! Ерунда такая. Указываю картинку для загрузки в View через галерею. Первый раз загружаю, нормально. Хочу указать другую....

Не работает обработчик события кнопки - Программирование Android
Не могу разобраться почему выскакивает ошибка..пока только учусь...

При запуске приложения на Android оно крашится и вылетает с ошибкой "В приложении %название% произошла ошибка" - Программирование Android
Как посмотреть логи ошибки? Игра просто была установлена, она не разрабатывалась мной.

Крашится приложение в Эмуляторе - Программирование Android
Здравствуйте, поставил себе IDEA + Genymotion Запускаю эмулятор, запускаю приложение и приложение тут же закрывается Приложение просто...

Крашится приложение после setext - Программирование Android
Всем здравствуйте, столкнулся с непонятной проблемой, запускаю приложение(отправляется строка на сервер, потом сервер ее обрабатывает и...

2
OlegJV
103 / 103 / 28
Регистрация: 13.03.2016
Сообщений: 474
09.07.2016, 04:30 #2
textViewLitres = (TextView) findViewById(R.id.???);
0
alpine
0 / 0 / 0
Регистрация: 10.11.2015
Сообщений: 3
09.07.2016, 15:38  [ТС] #3
ok, получилось запихнуть в массив. теперь такое дело.
удобнее всего мне бы было заиметь этот массив в почте - хотя бы и просто сырым текстом построчно.
но дело в том, что вайфай-сетка, к которой подцеплено устройство, не будет иметь выхода в интернет.
могу ли я при подключенном вайфае заставить своё приложение ломиться в сеть через 3г?

или проще сразу наплевать на это и пробовать разбираться с файловой системой?

Добавлено через 29 минут
кажется, понял, что нужно: сохранять файл, а потом использоать intent

теперь еще момент. как перевести строчку FF в число 255, строчку 10 в число 16? я что-то подзапутался с этим, не знаю, как у гугла правильно спросить...

Добавлено через 10 часов 37 минут
хехе. вроде всё работает - и сохранение, и отправка, и не так уж и сложно. stackoverflow рулит!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.07.2016, 15:38
Привет! Вот еще темы с ответами:

GC при запуске приложение - Программирование Android
При запуске приложения в логе вижу череду сообщений о работе GC 11-28 15:13:53.887: D/dalvikvm(1742): GC_CONCURRENT freed 318K, 50%...

Не работает приложение после нажатия кнопки home - Программирование Android
Добрый день, дорогие форумчане.:) Волнует такой вопрос - написала приложение под android(intelij idea), запускаю на девайсе. Всё...

Приложение крашится после присвоения обработчика - Программирование Android
Приложение крашится при таком коде: package com.mathahakar.e_cigmaster; import android.os.Bundle; import...

Крашится приложение после портирования на Циан - Программирование Android
ПРИВЕТ ПОРТИРУЮ ЦИАН СТОЛКНУЛСЯ С ПРОБЛЕМОЙ КРОШИТСЯ ПРИЛОЖЕНИЕ ТЕЛЕФОН ЗАГРУЖАЕТСЯ ВЫДАЕТ COM.ANDROID.PHONE ...


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

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

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