2011-09-27 10 views
9

io sono nuovo programmer.i vorrebbe implementare un'applicazione di esempio per ottenere la chat utilizzando XMPP server.In questa implementazione ho creato connessione utilizzando oggetto ConnectionConfiguration come segue:come ottenere la stessa connessione xmpp da un'attività all'altra?

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

sto passando oggetto connConfig a XMPPConnection classe chiamando il metodo di connessione sto ricevendo la connessione e chiamando il metodo di login passando con il nome utente pand password poi sono login a password.to login sto usando un pulsante. Quando ho cliccato sul pulsante sto usando Intent per cambiare l'attività.Uno Sto cambiando attività mi piacerebbe ottenere la stessa connessione in un'altra attività.

Ho scritto codice per LoginActivity come segue:

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); 

     } 
}); 

} 
} 

ho scritto ChatPageActivity come segue:

 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  

    } 
    } 

come ottenere la stessa connessione da LoginActivity a ChatPageActivity?

si prega di qualsiasi organismo aiutarmi

risposta

14

Creare una nuova classe (all'interno di un nuovo file .java), utilizzando il pattern Singleton (http://en.wikipedia.org/wiki/Singleton_pattern), dove è possibile mantenere l'attuale connessione attiva accessibile da qualsiasi punto della vostra applicazione.

Possibile soluzione:

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; 
    } 

} 

Poi, sul LoginActivity è possibile impostare la connessione:

XMPPLogic.getInstance().setConnection(connection); 

E nel ChatPage si ottiene è:

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

come posso mantenere più XMPPConnections nella stessa applicazione, attraverso l'applicazione voglio ottenere una connessione particolare. come posso mantenere in questo modo .. –

+0

Come viene identificata quella particolare collezione? Con una corda? Prenderò solo così. Puoi farlo cambiando questa "connessione XMPPConnection privata = null;" a questa "mappa privata connection = new HashMap ();" e cambia il getter e il setter per ottenere il nome della connessione (la stringa) ... dovrai solo memorizzare le connessioni nel negozio. –

+0

ho provato usando ArrayList con indice ma senza fortuna. che fornisce un'eccezione per l'indice di uscita, proverò in questo modo .. –

Problemi correlati