I was trying to pass my socket connection from one activity to another. Here is my code snippet.
public class MainActivity extends AppCompatActivity {
            //private EditText serverIp;
            private Button connectPhones;
            protected String SERVER_IP_ADDR = "172.16.1.103";
            protected String SERVER_PORT = "8889";
            private boolean connected = false;
            private Handler handler = new Handler();
            Socket socket;
            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                //serverIp = (EditText) findViewById(R.id.server_ip);
                connectPhones = (Button) findViewById(R.id.connect);
                connectPhones.setOnClickListener(connectListener);
            }
            public Socket getSocket(){
                Log.wtf("MainActivity : ",socket.toString());
                return socket;
            }
            private View.OnClickListener connectListener = new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (!connected) {
                        //SERVER_IP_ADDR = SERVER_IP_ADDR.getText().toString();
                        if (!SERVER_IP_ADDR.equals("")) {
                            Thread cThread = new Thread(new ClientThread());
                            cThread.start();
                        }
                    }
                }
            };
            public class ClientThread implements Runnable {
                public void run() {
                    try {
                        InetAddress serverAddr = InetAddress.getByName(SERVER_IP_ADDR);
                        Log.d("ClientActivity", "C: Connecting...");
                        socket = new Socket(serverAddr, Integer.parseInt(SERVER_PORT));
                        connected = true;
                            try {
                                Log.d("ClientActivity", "C: Sending command.");
                                PrintWriter out = new PrintWriter(new BufferedWriter(new OutputStreamWriter(socket
                                        .getOutputStream())), true);
                                out.println("Hey Server!");
                                Log.d("ClientActivity", "C: Sent.");
                                Intent intent = new Intent(getApplicationContext(), SocketInteraction.class);
                                startActivityForResult(intent,1);
                            } catch (Exception e) {
                                Log.e("ClientActivity", "S: Error", e);
                            }
                        //socket.close();
                        Log.d("ClientActivity", "C: Closed.");
                    } catch (Exception e) {
                        Log.e("ClientActivity", "C: Error", e);
                        connected = false;
                    }
                }
            }
        }
And in other activity, I am calling it like this
 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.socketinteraction);
    MainActivity mainActivity = new MainActivity();
    final Socket socket = mainActivity.getSocket();   //returns null pointer
But I don't know why, Its returning a Nullpointerexception. Can someone please assist me on how should I deal with this ?
 
     
     
     
    