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

Почему Handler не отображает сообщение на экране - Android

Восстановить пароль Регистрация
 
Вячеслав_1988
0 / 0 / 0
Регистрация: 16.10.2015
Сообщений: 21
27.11.2015, 16:18     Почему Handler не отображает сообщение на экране #1
Есть Handler, который выполняет Runnable, во входящий поток отправляется сообщение, по сути он должен отобразить его на экране, но нет, если не работает, то явно что-то я не так делаю, подскажите и не судите строго, я пока только пробую))
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
package com.example.client_1;
 
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.IOException;
import java.net.Socket;
import java.net.UnknownHostException;
 
import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends Activity {
    
    TextView tvCon, tvRes;
    Button btnCon;
    Socket client = null;
    int cPort = 6574;
    String  msg1;
    Handler h;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        btnCon = (Button)findViewById(R.id.btnCon);
        tvRes = (TextView)findViewById(R.id.tvRes);
 
 
        btnCon.setOnClickListener(oclBtn);
    }
        
        OnClickListener oclBtn = new OnClickListener(){
 
            @Override
            public void onClick(View v) {
                
                Thread t = new Thread (new Runnable(){
                    public void run(){
                        DataOutputStream dataOutputStream = null;
                        DataInputStream dataInputStream = null;
                try 
                {
                    client = new Socket ("10.0.2.2", cPort);
                    dataOutputStream = new DataOutputStream (client.getOutputStream());
                    dataOutputStream.writeBytes("123 Android !@#$%^&*()_+");
                    
                    dataInputStream = new DataInputStream (client.getInputStream());
                    msg1 = dataInputStream.readUTF();
                    h.post(tvResCh);
                }
                catch (UnknownHostException e)
                {
                    tvCon.append('\n' + "Error" + e.getMessage());
                    e.printStackTrace();
                }
                catch (IOException e)
                {
                    tvCon.append('\n' + "Error" + e.getMessage());
                    e.printStackTrace();
                }
                    }
                });
                t.start();
            }
            
        };
        Runnable tvResCh = new Runnable() {
            public void run(){
                tvRes.setText(msg1);
            }
            
        };
 
    }
Кстати, сообщение серверу отправляется и приходит только один раз по нажатию кнопки, дальше, сколько не кликай не идет...

Добавлено через 43 минуты
Начал отправлять, я просто не написал h = new Handler(); в основном потоке, только он отображает на экран сообщение "java.io.dataInputStream@цифры-буквы" и, как в случае с отправкой сообщения серверу, это происходит только один раз, а дальше - сколько не кликай...
Может это потому, что отправка.прием сообщений и подключение к серверу происходят по нажатию одной и той же кнопки?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.11.2015, 16:18     Почему Handler не отображает сообщение на экране
Посмотрите здесь:

Handler и интервал времени Android
Android Передача сообщения из потока. Handler
Про Handler и ProgressBar Android
Handler timer Android
Handler, поток не останавливается Android
Handler vs Service vs AsynkTask Android
Android Потоки (Handler внутри synchronized)
Android Работа с Handler из другого активити
Android Не работает Handler
Android Handler
Android Handler
Android Handler при пересоздании активити

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
REALIST07
Автор FAQ
Автор FAQ
 Аватар для REALIST07
174 / 174 / 13
Регистрация: 11.06.2010
Сообщений: 932
27.11.2015, 21:50     Почему Handler не отображает сообщение на экране #2
Используй AsyncTask
Yandex
Объявления
27.11.2015, 21:50     Почему Handler не отображает сообщение на экране
Ответ Создать тему
Опции темы

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