android = Подскажите почему при использование TextView закрывается приложение

170
27 августа 2018, 04:50

При использовании in и out в классе MainActivity приложение закрывается. Если использовать их напрямую в методе OnCreate () всё работает, но когда используется в потоках ничего не работает.

package com.example.clients;    
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
    TextView out;
    TextView in;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        out = (TextView)findViewById(R.id.out);
        in = (TextView)findViewById(R.id.In);
    }
    Connection mSocket = new Connection();
    public void OnClickConnection(View view){
        new Thread(new Runnable() {
            @Override
            public void run() {
            mSocket.openConnect();
            }
        }).start();
         new Thread(new Runnable() {
             @Override
             public void run() {
                 while(true){
                 out.setText(mSocket.message());
             }}
         }).start();
    }
    public void OnClickDisconnection(View view){
         mSocket.closeConnect();
    }
    public void OnRecieve(View view){
        mSocket.Recieve(in.getText().toString());
    }

}

Класс Connection:

package com.example.clients;
import android.content.Context;
import android.widget.Toast;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.Socket;
import java.nio.charset.Charset;
public class Connection {
    private String IpAdd = "25.31.107.195";
    Toast toast;
    private int port = 6988;
    private Socket socket;
    public Connection(){}
    public void openConnect(){
       closeConnect();
        try{
            socket = new Socket(IpAdd,port);
        }catch(IOException e){}
    }
    public void closeConnect() {
        if ((socket != null)&&(!socket.isClosed())){
            try {
                socket.close();
            }catch(IOException e){}
        }
    }
    public String message(){
        String msg=null;
              try {
            BufferedReader in;
            in = new BufferedReader(new InputStreamReader(socket.getInputStream(), Charset.forName("UTF-8")));
          msg = in.readLine();
        }catch(IOException e){}
        return msg;
    }
    public void Recieve(String msg) {
        byte[] value = msg.getBytes();
        try {
            socket.getOutputStream().write(value);
            socket.getOutputStream().flush();
        }catch(IOException e){}
    }

}

Приложение должно принимать данные от сервера и отправлять их ему. Надеюсь проблему объяснил хорошо и понятно.

READ ALSO
Тетрис libgdx падения фигур

Тетрис libgdx падения фигур

Как сделать так чтобы фигуры тетриса опускались вниз с использованием libgdx Eclipse? Фигурки сами рендерятсяНо двигаться вниз не желают

163
Вывод чисел Каталана

Вывод чисел Каталана

Вопрос про вывод чисел КаталанаКод написан для решения вот этой задачи Правильная скобочная последовательность

210
Обновление данных вывода

Обновление данных вывода

имеется программа, цель которой собирать данные о процессоре, видеокарте, ЖД и дрЕсть блок switch:

227
Не работают StaticFiles в Django 2.0

Не работают StaticFiles в Django 2.0

(!) В чем проблема: Не применяется css staticfile на локальном сервере1) HTML5 код:

185