2011-09-27 5 views
9

soy nuevo programmer.i le gustaría poner en práctica aplicación de ejemplo para obtener el chat utilizando XMPP server.In esta implementación he creado la conexión mediante el uso de objetos ConnectionConfiguration de la siguiente manera:cómo obtener la misma conexión xmpp de una actividad a otra?

ConnectionConfiguration connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service); 

estoy pasando objeto connConfig a XMPPConnection clase llamando al método de conexión obtengo la conexión y al llamar al método de ingreso que pasa con el nombre de usuario y la contraseña, entonces inicio sesión con la contraseña. para iniciar sesión estoy usando un botón. Cuando hice clic en el botón, estoy usando Intento para cambiar la actividad. estoy cambiando la actividad me gustaría obtener la misma conexión en otra actividad.

He escrito código para LoginActivity de la siguiente manera:

public class LoginActivity extends Activity 
{ 

ConnectionConfiguration connConfig ; 

XMPPConnection connection; 



    @Override 
protected void onCreate(Bundle savedInstanceState) 
    { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.setting); 


    ((Button)findViewById(R.id.login)).setOnClickListener(new OnClickListener() { 

    @Override 
    public void onClick(View arg0) 
      { 

      connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service); 

      connection = new XMPPConnection(connConfig); 

      connection.connect(); 
      connection.login(uname, password); 

     } 
}); 

} 
} 

He escrito ChatPageActivity de la siguiente manera:

 public class ChatPage extends Activity { 

@Override 
public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.chatpage); 

    //How to get the same XMPPConnection from LoginActivity here  

    } 
    } 

cómo obtener la misma conexión de LoginActivity a ChatPageActivity?

favor de cualquier organismo que me ayude

Respuesta

14

crear una nueva clase (en un nuevo archivo .java), utilizando el patrón Singleton (http://en.wikipedia.org/wiki/Singleton_pattern), donde se puede mantener la conexión activa actual accesible desde cualquier punto de su aplicación.

Posible solución:

public class XMPPLogic { 

    private XMPPConnection connection = null; 

    private static XMPPLogic instance = null; 

    public synchronized static XMPPLogic getInstance() { 
    if(instance==null){ 
     instance = new XMPPLogic(); 
    } 
    return instance; 
    } 

    public void setConnection(XMPPConnection connection){ 
    this.connection = connection; 
    } 

    public XMPPConnection getConnection() { 
    return this.connection; 
    } 

} 

Luego, en su LoginActivity que establece la conexión:

XMPPLogic.getInstance().setConnection(connection); 

Y en el ChatPage se contrae:

XMPPLogic.getInstance().getConnection().doStuff() 
+0

¿Cómo puedo mantener más XMPPConnections en la misma aplicación, a través de la aplicación quiero obtener una conexión particular. ¿Cómo puedo mantener así ... –

+0

¿Cómo se identifica esa colección en particular? ¿Por una cuerda? Asumo que sí. Puede hacerlo cambiando esta "conexión privada XMPPConnection = null;" a esta "conexión privada de Map = nueva HashMap ();" y cambie el getter y el setter para obtener el nombre de la conexión (la cadena) ... solo almacenará las conexiones en la tienda. –

+0

intenté usando ArrayList con índice pero sin suerte. que da la excepción de índice de tamaño de salida, voy a intentarlo así ... –

Cuestiones relacionadas