2015-07-21 137 views
0

我是XMPP世界的新手。我试图通过安装在同一台机器上的模拟器连接安装在本地主机上的Open Fire Server。到目前为止,我能够连接到服务器,但尝试从模拟器发送消息到服务器有MessageListener()SMACK类的使用错误。下面是我得到了错误: - “中的‘messageListener’级‘从消息监听衍生匿名类’必须被声明为抽象或实现抽象方法‘而processMessage(消息)”’类'从MessageListener派生的匿名类'必须声明为抽象或实现抽象方法

试过Google上升但无法找出为什么会出现这个错误。 下面是代码我写: -

private class MyTask extends AsyncTask<Void, Void, Void> { 
    String textResult; 
    @Override 
    protected void onPreExecute() { 
     super.onPreExecute(); 
    } 
    @Override 
    protected Void doInBackground(Void... params) throws XMPPException { 

     // run your networking code here 
     // Create the configuration for this new connection 
     XMPPTCPConnectionConfiguration.Builder configBuilder =  
     XMPPTCPConnectionConfiguration.builder();   
     configBuilder.setSecurityMode 
      (ConnectionConfiguration.SecurityMode.disabled);    
     configBuilder.setServiceName("fire"); 
     configBuilder.setHost("10.0.2.2"); 
     configBuilder.setPort(5222); 
     configBuilder.setCompressionEnabled(false); 
     configBuilder.setResource("kenta"); 
     configBuilder.setDebuggerEnabled(true); 
     configBuilder.setUsernameAndPassword("[email protected]", "fire"); 

     AbstractXMPPConnection connection = new 
    XMPPTCPConnection(configBuilder.build()); 
     // Connect to the server 
     try { 
      connection.connect(); 
     } catch(SmackException e) 
     { 
      e.printStackTrace(); 
      textResult = e.toString(); 
     } catch(IOException e) 
     { 
      e.printStackTrace(); 
      textResult = e.toString(); 
     } 
     catch (XMPPException e) { 
      e.printStackTrace(); 
      textResult = e.toString(); 
     } 
    // Log into the server 
     try { 
      connection.login(); 
      // Assume we've created an XMPPConnection name "connection"._ 
      ChatManager chatmanager = 
    ChatManager.getInstanceFor(connection); 
      Chat newChat = chatmanager.createChat("[email protected]", 
     new MessageListener() { 
       public void processMessage(Chat chat, Message message) { 
        System.out.println("Received message: " + message); 
       } 
      }); 

      newChat.sendMessage("Howdy!"); 


     } catch (XMPPException e) { 
      e.printStackTrace(); 
      textResult = e.toString(); 
     } catch (SmackException e) { 
      e.printStackTrace(); 
      textResult = e.toString(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
      textResult = e.toString(); 
     } 
    // Disconnect from the server 
     //connection.disconnect(); 
    return null; 
    } 

日Thnx提前对您有所帮助。

+1

确保您导入了正确的类,同时您的IDE可以帮助哪些方法未实现。 – dsharew

+0

由于没有选择正确的课程,我没有收到错误。我目前正在使用Android Studio 1.2.2并使用Gradle构建项目。无法找到错误的来源。让我知道是否需要其他信息。 –

回答

2

能够通过用ChatMessageListener()替换MessageListener()来解决错误。在SMACK 4.1版本下,MessageListener已重命名为ChatMessageListener。注意:MessageListener仍然存在一个不同的接口合约!

建议在使用作为解决方案的一部分给出的代码之前,在各种网站上查看最新版本的doc文档。

谢谢大家帮助我,并在解决问题时给予适当的时间。

+0

Thx,那工作:) 但我不明白为什么官方文档仍然使用MessageListener –

相关问题