Проблема, когда я пытаюсь переместить код создания сокета в другой вид деятельности? - PullRequest
0 голосов
/ 15 августа 2011

У меня есть приложение для Android, созданное Eclipse. Это приложение работает как клиент, подключающийся к серверу по беспроводной сети через сокетное соединение. У меня проблема с кодом создания сокета. Когда я пытаюсь переместить код из одного действия в другое в моем приложении, он не работает.

Вот первое действие, где работает код:

public class MyNewAndroidActivity extends Activity {
    protected Socket socket;


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        final Button button_connect = (Button) findViewById(R.id.button1);
        final Button button_disconnect = (Button) findViewById(R.id.button2);
        final Button b_forward = (Button) findViewById(R.id.b_forward);
        final Button b_backward = (Button) findViewById(R.id.b_backward);
        final Button b_right = (Button) findViewById(R.id.b_right);
        final Button b_left = (Button) findViewById(R.id.b_left);
        final Button b_stop = (Button) findViewById(R.id.b_stop);


        button_connect.setOnClickListener(new View.OnClickListener() { 

            public void onClick(View v) {
                try {
            // Create socket with time out
            //192.168.1.76
        // my code which I want to transfer it.         
        int port = 2005; 
    SocketAddress sockaddr = new  InetSocketAddress("192.168.1.15", port);

                      socket = new Socket(); 
                      int timeoutMs = 2000; 
                      socket.connect(sockaddr, timeoutMs); 


                    }   


            catch (UnknownHostException e) {
                    // TODO Auto-generated catch block
                        e.printStackTrace();
                    }               
                catch (SocketException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (IOException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                } catch (SecurityException e) {
                    // TODO Auto-generated catch block
                    e.printStackTrace();
                }


            }
        });

когда я конвертирую его в метод в другом упражнении, он не работает

public class IBMEyes extends Activity implements SensorListener{ 
    protected static Socket socket;
    final String tag = "MyProject";
    String state ="off";


    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        sm = (SensorManager) getSystemService(SENSOR_SERVICE);
        setContentView(R.layout.main);


       Button b_connect = (Button) findViewById(R.id.button1);
        b_connect.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

        SocketConnect();    
}
        });


// here is my code that I've transferred it.
    public void SocketConnect() {
        // TODO Auto-generated method stub
        try {

       int port = 2005; 
    SocketAddress sockaddr = new  InetSocketAddress("192.168.1.15", port);

              socket = new Socket(); 
              int timeoutMs = 2000; 
              socket.connect(sockaddr, timeoutMs);       


            } catch (UnknownHostException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            } catch (SocketException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            } catch (SecurityException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
            }


    }
...