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,所以如果有人选择了其他人,那么聊天就必须启动。但它崩溃了。。