Android 使用XMPP连接到facebook&;gtalk

Android 使用XMPP连接到facebook&;gtalk,android,chat,Android,Chat,当第一次连接时,它工作,但按下后退按钮并选择其他人聊天后..应用程序崩溃..聊天代码如下..如果需要我方提供更多代码或解释,请建议: public class Chat extends Activity{ private ArrayList<String> messages = new ArrayList<String>(); private Handler mHandler = new Handler(); private EditText recipien

当第一次连接时,它工作,但按下后退按钮并选择其他人聊天后..应用程序崩溃..聊天代码如下..如果需要我方提供更多代码或解释,请建议:

    public class Chat extends Activity{
private ArrayList<String> messages = new ArrayList<String>();

private Handler mHandler = new Handler();

private EditText recipient1;
private EditText textMessage;
private ListView listview;
String recipient;
@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.chat);
    Intent intent = getIntent();
    final String recipient = intent.getStringExtra("contentOne");
    String receivedContentTwo = intent.getStringExtra("contentTwo");
    recipient1 = (EditText) this.findViewById(R.id.editText1);
    recipient1.setText(String.valueOf(receivedContentTwo));
    textMessage = (EditText) this.findViewById(R.id.editText2);
    listview = (ListView) this.findViewById(R.id.listView1);
    setListAdapter();
    // Set a listener to send a chat text message
    Button send = (Button) this.findViewById(R.id.button1);
    send.setOnClickListener(new View.OnClickListener() {
        public void onClick(View view) {
            String to = recipient;
            String text = textMessage.getText().toString();
             textMessage.setText(" ");
            //Log.i("XMPPChatDemoActivity", "Sending text " + text + " to " + to);
            Message msg = new Message(to, Message.Type.chat);
            msg.setBody(text);              
            if (connection != null) {
                connection.sendPacket(msg);
                messages.add("you" + ":");
                messages.add(text);
                setListAdapter();
            }

        }
    });

}
public void setConnection(XMPPConnection connection) {
    MainActivity.connection=connection;

    if (connection != null) {
        // Add a packet listener to get messages sent to us
        PacketFilter filter = new MessageTypeFilter(Message.Type.chat);
        connection.addPacketListener(new PacketListener() {
            @Override
            public void processPacket(Packet packet) {
                Message message = (Message) packet;
                if (message.getBody() != null) {
                    String fromName = "you";
                    //String fromName = StringUtils.parseName(message.getFrom());
                    Log.i("XMPPChatDemoActivity", "Text Recieved " + message.getBody()
                            + " from " + fromName );
                    messages.add(fromName + ":");
                    messages.add(message.getBody());
                    //Add the incoming message to the list view
                    mHandler.post(new Runnable() {
                        public void run() {
                            setListAdapter();
                        }
                    });
            }
            }
        }, filter);
    }
}
private void setListAdapter() {
    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,
            R.layout.simple, messages);
    listview.setAdapter(adapter);
}

@Override
protected void onDestroy() {
    super.onDestroy();
    try {
        if (connection != null)
            connection.disconnect();
    } catch (Exception e) {

    }
}
公共类聊天扩展活动{
private ArrayList messages=new ArrayList();
私有处理程序mHandler=新处理程序();
私人编辑文本接收者1;
私人编辑文本信息;
私有列表视图列表视图;
字符串接收者;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
//TODO自动生成的方法存根
super.onCreate(savedInstanceState);
setContentView(R.layout.chat);
Intent=getIntent();
最终字符串接收者=intent.getStringExtra(“contentOne”);
String receivedContentTwo=intent.getStringExtra(“contentTwo”);
recipient1=(EditText)this.findViewById(R.id.editText1);
recipient1.setText(String.valueOf(receivedContentTwo));
textMessage=(EditText)this.findViewById(R.id.editText2);
listview=(listview)this.findViewById(R.id.listView1);
setListAdapter();
//设置侦听器以发送聊天文本消息
按钮发送=(按钮)this.findViewById(R.id.button1);
send.setOnClickListener(新视图.OnClickListener(){
公共void onClick(视图){
字符串to=收件人;
字符串text=textMessage.getText().toString();
textMessage.setText(“”);
//Log.i(“xmppchatdomactivity”,“发送文本”+text+“到”+to”);
Message msg=新消息(收件人,Message.Type.chat);
msg.setBody(文本);
if(连接!=null){
连接发送包(msg);
添加(“您”+“:”);
消息。添加(文本);
setListAdapter();
}
}
});
}
公共无效设置连接(XMPPConnection连接){
MainActivity.connection=连接;
if(连接!=null){
//添加数据包侦听器以获取发送给我们的消息
PacketFilter=newmessagetypefilter(Message.Type.chat);
addPacketListener(新的PacketListener(){
@凌驾
公共无效处理数据包(数据包){
消息消息=(消息)数据包;
if(message.getBody()!=null){
String fromName=“you”;
//String fromName=StringUtils.parseName(message.getFrom());
Log.i(“XMPPChatDemoActivity”,“Text received”+message.getBody()
+“from”+fromName);
messages.add(fromName+“:”);
messages.add(message.getBody());
//将传入消息添加到列表视图
mHandler.post(新Runnable(){
公开募捐{
setListAdapter();
}
});
}
}
},过滤器);
}
}
私有void setListAdapter(){
ArrayAdapter=新的ArrayAdapter(此,
R.layout.simple,消息);
setAdapter(适配器);
}
@凌驾
受保护的空onDestroy(){
super.ondestory();
试一试{
if(连接!=null)
连接断开();
}捕获(例外e){
}
}

只要告诉我,当按下手机上可用的“后退”按钮时,我该怎么办。实际上,问题是这个按钮会引导我进入listview,所以如果有人选择了其他人,那么聊天就必须启动。但它崩溃了。。