как получить одно и то же соединение xmpp от одного действия к другому? - PullRequest
9 голосов
/ 27 сентября 2011

Я новый программист. Я хотел бы реализовать пример приложения для получения чата с помощью сервера xmpp. В этой реализации я создал соединение с помощью объекта ConnectionConfiguration следующим образом:

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

Я передаю connConfigВозьмите объект класса XMPPConnection, вызвав метод connect, я получаю соединение, и вызвав метод login, передавая имя пользователя и пароль, затем я вхожу в пароль. Для входа в систему я использую кнопку. Когда я нажимаю на кнопку, я использую Intent для измененияActivity.One я меняю активность, я хотел бы получить то же соединение в другой деятельности.

Я написал код для 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);

        }
});

 }
}

Iнаписали 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 Ответ

14 голосов
/ 27 сентября 2011

Создайте новый класс (внутри нового файла .java), используя шаблон синглтона (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()
...