2011-09-27 14 views
9

मैं नई programmer.i xmpp का उपयोग करके चैट प्राप्त करने के लिए नमूना आवेदन को लागू करना चाहते हैं हूँ server.In इस कार्यान्वयन मैं इस प्रकार ConnectionConfiguration वस्तु का उपयोग करके कनेक्शन बनाया है:एक गतिविधि से दूसरे गतिविधि में एक ही xmpp कनेक्शन कैसे प्राप्त करें?

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

मैं XMPPConnection को connConfig वस्तु गुजर रहा कनेक्ट विधि को कॉल करके कक्षा मुझे कनेक्शन मिल रहा है और उपयोगकर्ता नाम पैंड पासवर्ड से गुजरने वाली लॉगिन विधि को कॉल करके मैं पासवर्ड में लॉगिन कर रहा हूं। लॉगिन करने के लिए मैं एक बटन का उपयोग कर रहा हूं। जब मैंने बटन पर क्लिक किया तो मैं गतिविधि को बदलने के लिए इरादे का उपयोग कर रहा हूं। एक मैं गतिविधि बदल रहा हूं मैं एक और गतिविधि में एक ही कनेक्शन प्राप्त करना चाहता हूं।

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

     } 
}); 

} 
} 

मैं ChatPageActivity लिखा है इस प्रकार है::

 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  

    } 
    } 

कैसे ChatPageActivity को LoginActivity से एक ही कनेक्शन लेने के लिए

मैं इस प्रकार LoginActivity के लिए कोड लिखा है?

कृपया किसी भी शरीर मेरी मदद

उत्तर

14

एक नया वर्ग (एक नई जावा फाइल के अंदर) बनाएँ, सिंगलटन पैटर्न (http://en.wikipedia.org/wiki/Singleton_pattern), जहां आप अपने आवेदन के किसी भी बिंदु से सुलभ वर्तमान सक्रिय कनेक्शन का उपयोग कर रख सकते हैं।

संभव समाधान:

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

} 

फिर, अपने LoginActivity पर आप कनेक्शन सेट करें:

XMPPLogic.getInstance().setConnection(connection); 

और ChatPage में आप प्राप्त यह:

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

कैसे मैं अधिक बनाए रख सकते हैं एक ही आवेदन में XMPPConnections, एप्लिकेशन के माध्यम से मैं एक विशेष कनेक्शन प्राप्त करना चाहता हूं। मैं इस तरह कैसे बनाए रख सकता हूं .. –

+0

उस विशेष संग्रह को कैसे पहचाना जाता है? एक स्ट्रिंग द्वारा? मैं बस ऐसा मानूंगा। आप इसे "निजी XMPPConnection कनेक्शन = null;" बदलकर कर सकते हैं इस "निजी मानचित्र <स्ट्रिंग, एक्सएमपीपीकनेक्शन> कनेक्शन = नया हैश मैप <स्ट्रिंग, एक्सएमपीपीकनेक्शन>();" और कनेक्शन नाम (स्ट्रिंग) प्राप्त करने के लिए गेटर और सेटर को बदलें ... आप केवल स्टोर में कनेक्शन स्टोर करेंगे। –

+0

मैंने सूचकांक के साथ ArrayList का उपयोग करके कोशिश की लेकिन कोई भाग्य नहीं। जो सूचकांक आउटऑफ आकार अपवाद देता है, मैं इस तरह कोशिश करूंगा .. –

संबंधित मुद्दे