Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 当我连接到套接字时,如何在单击按钮时发送字符串?_Java_Android_Sockets - Fatal编程技术网

Java 当我连接到套接字时,如何在单击按钮时发送字符串?

Java 当我连接到套接字时,如何在单击按钮时发送字符串?,java,android,sockets,Java,Android,Sockets,当我连接到服务器时,我想通过点击按钮的套接字发送数据。我试图在ConnectTask类和TcpClient类中调用setOnClickListener,但它显示了一个错误。虽然我在ConnectTask中创建了它,但它没有显示错误,但不起作用。我怎么做?下面是我的课程 这是我的主要课程: import android.os.AsyncTask; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; i

当我连接到服务器时,我想通过点击按钮的套接字发送数据。我试图在ConnectTask类和TcpClient类中调用
setOnClickListener
,但它显示了一个错误。虽然我在ConnectTask中创建了它,但它没有显示错误,但不起作用。我怎么做?下面是我的课程

这是我的主要课程:

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.util.Log;
import android.widget.EditText;

import org.json.JSONObject;
public class MainActivity extends AppCompatActivity {
    Button btn;
    EditText edt;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn=(Button)findViewById(R.id.button);
        edt=(EditText)findViewById(R.id.editText);
        ConnectTask connectTask=new ConnectTask();
        connectTask.execute("testing");
    }
    public class ConnectTask extends AsyncTask<String, String, TcpClient> {


        @Override
        protected TcpClient doInBackground(String... message) {
            Log.d("TCP Client", "checking");
            TcpClient mTcpClient;
            //we create a TCPClient object
            mTcpClient = new TcpClient(new TcpClient.OnMessageReceived() {
                @Override
                //here the messageReceived method is implemented
                public void messageReceived(String message) {
                    //this method calls the onProgressUpdate
                    publishProgress(message);
                }
            });
            mTcpClient.run();


            return null;
        }
        @Override
        protected void onProgressUpdate(String... values) {
            super.onProgressUpdate(values);
            //response received from server
            Log.d("test", "response " + values[0]);
            //process server response here....

        }
    }
}    
  • 将TcpClient mTcpClient移动到MainActivity类:

    public class MainActivity extends AppCompatActivity {
    
    Button btn;
    EditText edt;
    TcpClient mTcpClient;
    
  • 删除TcpClient mTcpClient;从受保护的TcpClient doInBackground

    protected TcpClient doInBackground(String... message) {
      Log.d("TCP Client", "checking");
      // remove this line TcpClient mTcpClient
    
  • 将操作侦听器添加到按钮并调用tcpClientto发送消息

    @Override
    protected void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.activity_main);
       btn=(Button)findViewById(R.id.button);
       button.setOnClickListener(new View.OnClickListener() {
          @Override
          public void onClick(View v) {
            mTcpClient.senMessage("get Text from text box");
          }
       });
    
    edt=(EditText)findViewById(R.id.editText);
    ConnectTask connectTask=new ConnectTask();
    connectTask.execute("testing");
    
    }

  • 公共类TcpClient扩展main活动{

    在扩展活动的类的名称中没有活动是非常糟糕的

      public class TcpClientActivity extends MainActivity{
    
    然后你会得到

      mTcpClient = new TcpClientActivity(new TcpClientActivity.OnMessageReceived() {
    

    每个人都会站起来哭泣:你不能用
    new
    操作符实例化一个活动。

    我应该把setOnClickListener放在哪里?我想从edittext获取文本并通过sendMessage()发送文本方法。我该怎么做?我已经在这里堆了三天了。现在我可以完成我的项目了。它真的很有效。系统说不感谢,但我是认真的。很抱歉。它不能扩展mainactivity。
      mTcpClient = new TcpClientActivity(new TcpClientActivity.OnMessageReceived() {