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

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

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

Метод вызывается только после второго нажатия на кнопку - Программирование Android

01.11.2015, 20:08. Просмотров 201. Ответов 2
Метки нет (Все метки)

есть метод

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
40
41
import com.github.nkzawa.emitter.Emitter;
import com.github.nkzawa.socketio.client.Ack;
import com.github.nkzawa.socketio.client.IO;
import com.github.nkzawa.socketio.client.Socket;
 
//gradle (compile 'com.android.support:appcompat-v7:23.0.0'
//            compile 'com.github.nkzawa:socket.io-client:0.3.0')
 
public String getJsonFromsite() throws URISyntaxException {
        final com.github.nkzawa.socketio.client.Socket socket = IO.socket("http://aplikuha.ru");
        socket.connect();
        socket.on(com.github.nkzawa.socketio.client.Socket.EVENT_CONNECT, new Emitter.Listener() {
            @Override
            public void call(Object... args) {
                Ack ack = new Ack() {
                    @Override
                    public void call(Object... os) {
                        for (Object obj : os) {
                            str += obj.toString();
                        }
                    }
                };
                Emitter emit = socket.emit("getData", 1114475126, ack); //now(timestamp)
            }
        }).on("event", new Emitter.Listener() {
 
            @Override
            public void call(Object... args) {
            }
 
        }).on(com.github.nkzawa.socketio.client.Socket.EVENT_DISCONNECT, new Emitter.Listener() {
 
            @Override
            public void call(Object... args) {
            }
 
        });
        socket.connect();
        return str;
 
    }
Метод получает большой (150 кБ) JSON
https://yadi.sk/i/f_LSE2jjjyDcQ
Вызываю кнопкой и пытаюсь напечатать JSON в системном отладчике:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
btnAdd.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Thread(new Runnable() {
                    public void run() {
                        try {
                            System.out.println(getJsonFromsite());
                        } catch (URISyntaxException e) {
                            e.printStackTrace();
                        }
                    }
                }).start();
            }
        });
Проблема в том, что JSON печатается не с первого нажатия на кнопку, а только с последующих.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.11.2015, 20:08
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Метод вызывается только после второго нажатия на кнопку (Программирование Android):

Сразу после нажатия Power вызывается OnCreate. Почему? - Программирование Android
Здравствуйте. Пишу вообще под Mono.Android, но в той ветке глухо, да и код очень похож на Java, так что это я думаю не проблемма, да и...

Сделать кнопку невидимой после нажатия - Программирование Android
Здравствуйте. Я новичок в программировании на Андроиде (нужно разработать мобильное приложение для диплома), я столкнулся со следующей...

Крашится программа после нажатия на кнопку - Программирование Android
Когда нажимаю на клавишу button2 крашится программа в чем проблема? public class Main3Activity extends AppCompatActivity implements...

Подскажите - не вызывается метод в потоке - Программирование Android
progress = ProgressDialog.show(getActivity(), "Please wait...", "Applying changes may take a few minutes.",...

База SQLite: метод по созданию таблицы не вызывается - Программирование Android
Не пойму что не так. Раньше с ним не работал Пытался реализовать пример из сети, но что то не хочет, подозреваю что не создана сама...

Событие нажатия на кнопку home - Программирование Android
я хочу по нажатию на среднию кнопку там где нарисован домик вывести сообщение @Override public boolean onKeyDown(int keyCode,...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
01.11.2015, 23:21 #2
__romka_, а почему socket.connect () дважды написан?
__romka_
0 / 0 / 0
Регистрация: 08.09.2010
Сообщений: 25
04.11.2015, 21:20  [ТС] #3
Убрал лишний socket.connect ().
Все равно ответ приходит (JSON) только со второго нажатия на кнопку.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.11.2015, 21:20
Привет! Вот еще темы с ответами:

После засыпания вызывается onCreate и onRestoreInstanceState - Программирование Android
Привет. После засыпания вызывается onCreate и onRestoreInstanceState, зачем они вызываются и как обойти? У меня программа для работы...

UserControl срабатывает после второго нажатия на кнопку - C# ASP.NET
Помогите пожалуйста, сделать так чтобы при нажатии на кнопку в usercontrol значение метки на главной странице изменялось после первого...

почему после второго нажатия на кнопку вылетает ошибка? - C#
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using...

Выполнение функции только после второго нажатия на div - jQuery
О Кодо-Боги!!! На div вешаю функцию play/pause, все ок, но играть начинает только со второго клика (!). Дальше все норм, и play и pause...


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

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

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