我是新的programmer.i想使用xmpp服务器实现示例应用程序来获取聊天.在这个实现中,我已经使用ConnectionConfiguration对象创建了连接,如下所示:
ConnectionConfiguration connConfig =new ConnectionConfiguration(host,Integer.parseInt(sport),service);
我将connConfig对象传递给XMPPConnection类,通过调用connect方法我正在获取连接,并通过调用login方法传递用户名pand密码然后我登录到password.to登录我正在使用一个按钮.当我点击按钮我正在使用意图改变活动.一个我正在改变活动,我想在另一个活动中获得相同的连接.
我已经编写了LoginActivity的代码,如下所示:
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,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 } }
如何从LoginActivity到ChatPageActivity获得相同的连接?
请任何身体帮助我
解决方法
使用单例模式(
http://en.wikipedia.org/wiki/Singleton_pattern)创建一个新类(在一个新的.java文件中),您可以从应用程序的任何一个位置保持当前的活动连接.
可能解决方案
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()