Te recomiendo que para pasar "grandes" flujos de datos te crees una clase que se encargue de eso, en esa clase coges todos los datos desde la clase emisora y luego en la clase receptora los coges, es lo que he hecho para mi aplicación que tengo en desarrollo. Te aconsejo tambien si va a ser una activity que venga de 2+ activitys diferentes y que solo desde una activity obtendrás datos, yo al menos tengo un valor int que no cambia para pasarlo en el intent con Bundle y en la clase receptora comprueba si el intent con el bundle es diferente a null y si el caso que no sea null entonces hago ya el proceso de obtención. Ahora no tengo tiempo pero ahora te pongo un código de ejemplo de muestra

.
RequestData.class (Este es el nombre que tengo)
Código:
public class RequestData {
//Inserta aqui las variables que quieras
private String nombre = null
private String club = null;
private static RequestData Instance = null;
private static final int PASS = 1; //Esta variable era para lo que te dije del bundle pero lo recomiendo ponerlo en la clase emisora
private synchronized static void createInstance(){
if(INSTANCE == null)
INSTANCE = new RequestData();
}
public static RequestData getInstance(){
if(INSTANCE == null) createInstance();
return INSTANCE;
}
// Sus respectivos gets and sets de tus variables.
}
clase emisora
Código:
RequestData rd = RequestData.getInstance();
//Los set correspondientes y el bundle
clase receptora
Código:
Request Data rd = RequestData.getInstance();
Bundle b;
if((b.getIntent().getExtras()) != null)
//Aqui inserta un metodo para hacer la recolecion de datos y etc.
PD:No seria mal un code para Java y sea mas facil leer el codigo sino es una matanza intentar comprenderlo y un code que sea mas ancho para metodos mas grandes porque es imposible seguir el hilo a veces