如何从一个活动到另一个活动获得相同的xmpp连接?

时间:2011-09-27 06:56:18

标签: android xmpp chat

我是新的程序员。我想通过使用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获得相同的连接?

请任何人帮助我

1 个答案:

答案 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()