2011-09-27 38 views
9

tôi programmer.i mới muốn thực hiện ứng dụng mẫu để nhận trò chuyện bằng cách sử dụng XMPP server.In thi này tôi đã tạo ra kết nối bằng cách sử dụng đối tượng ConnectionConfiguration như sau:cách nhận kết nối xmpp giống nhau từ hoạt động này sang hoạt động khác?

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

tôi đi qua đối tượng connConfig để XMPPConnection lớp bằng cách gọi phương pháp kết nối tôi đang nhận được kết nối và bằng cách gọi phương thức đăng nhập đi qua với tên người dùng mật khẩu pand sau đó tôi đăng nhập vào password.to đăng nhập tôi đang sử dụng một button.When tôi nhấp vào nút tôi đang sử dụng Intent để thay đổi activity.One tôi đang thay đổi hoạt động tôi muốn nhận được kết nối tương tự trong một hoạt động khác.

Tôi đã viết mã cho LoginActivity như sau:

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

     } 
}); 

} 
} 

Tôi đã viết ChatPageActivity như sau:

 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  

    } 
    } 

làm thế nào để có được cùng một kết nối từ LoginActivity để ChatPageActivity?

vui lòng bất cứ cơ thể giúp tôi

Trả lời

14

Tạo một lớp mới (bên trong một file java mới), sử dụng mô hình singleton (http://en.wikipedia.org/wiki/Singleton_pattern), nơi bạn có thể giữ cho các kết nối hoạt động hiện tại thể truy cập từ bất kỳ điểm nào của ứng dụng của bạn.

giải pháp có thể:

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

} 

Sau đó, trên LoginActivity của bạn, bạn thiết lập các kết nối:

XMPPLogic.getInstance().setConnection(connection); 

Và trong ChatPage bạn nhận được nó:

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

Làm thế nào tôi có thể duy trì hơn XMPPConnections trong cùng một ứng dụng, thông qua ứng dụng tôi muốn nhận được một kết nối cụ thể. làm thế nào tôi có thể duy trì như thế này .. –

+0

Bộ sưu tập cụ thể được xác định như thế nào? Bởi một chuỗi? Tôi sẽ giả định như vậy. Bạn có thể làm điều đó bằng cách thay đổi "kết nối XMPPConnection riêng tư này = null;" với "Bản đồ riêng tư connection = new HashMap ();" và thay đổi getter và setter để có được tên kết nối (chuỗi) ... bạn sẽ chỉ lưu trữ các kết nối trong cửa hàng. –

+0

tôi đã thử bằng cách sử dụng ArrayList với chỉ mục nhưng không có may mắn. cung cấp cho chỉ số kích thước ngoại lệ, tôi sẽ cố gắng như thế này .. –

Các vấn đề liên quan