我是新的程序员。我想通过使用xmpp服务器实现示例应用程序以获取聊天。在此实现中,我使用ConnectionConfiguration对象创建了连接,如下所示:
ConnectionConfiguration connConfig =new ConnectionConfiguration(host, Integer.parseInt(sport), service);
我通过调用connect方法将connConfig对象传递给XMPPConnection类我正在获取连接并通过调用登录方法传递用户名pand密码然后我登录到password.to登录我正在使用按钮。当我点击按钮时我正在使用Intent来改变活动。我正在改变活动,我想在另一个活动中获得相同的连接。
我已经为 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, 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
}
}
如何从LoginActivity到ChatPageActivity获得相同的连接?
请任何人帮助我
答案 0 :(得分:14)
使用单例模式(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()