2016-02-26 42 views
0

我是Xmpp的新手,现在感到困惑。当我向ConnectionListener接口方法添加一个新的Toast时,Toast不会显示在应用程序中。ConnectionListener方法不显示Toast(Smack库)

我的代码:

conn2.addConnectionListener(new ConnectionListener() 
    { 
     @Override 
     public void connected(XMPPConnection xmppConnection) 
     { 
      Toast.makeText(getApplicationContext(), "connected", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void authenticated(XMPPConnection xmppConnection, boolean b) 
     { 
      Toast.makeText(getApplicationContext(), "authenticated", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void connectionClosed() 
     { 
      Toast.makeText(getApplicationContext(), "conclose", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void connectionClosedOnError(Exception e) 
     { 
      Toast.makeText(getApplicationContext(), "conclose", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void reconnectionSuccessful() 
     { 
      Toast.makeText(getApplicationContext(), "reconnect", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void reconnectingIn(int i) 
     { 
      Toast.makeText(getApplicationContext(), "reconnect", Toast.LENGTH_LONG).show(); 
     } 

     @Override 
     public void reconnectionFailed(Exception e) 
     { 

     } 
    }); 

这是我所期望的代码做的:只要建立连接应该是出现在屏幕上说,一个新的面包“已连接”。什么我做错了什么。这是否是错误的方式?

回答

0

您需要创建一个处理程序才能显示吐司消息。

例如:

private Handler mHandler = new Handler(); 

此创建处理程序对象。之后,在您的任何连接监听器的代码,补充一点:

例如,我在reconnectionSuccessful显示吐司()方法:

@Override 
    public void reconnectionSuccessful() { 
     mHandler.post(new Runnable() { 
      @Override 
      public void run() { 
       Toast.makeText(this, "Yay, Reconnect Success!",Toast.LENGTH_LONG).show(); 
      } 
     }); 
    } 
2

你必须使用一个处理程序,但应这样看:

new Handler(Looper.getMainLooper())