Class' Anonymous类派生自MessageListener'必须被声明为抽象的或实现抽象方法

时间:2015-07-21 06:16:36

标签: android

我是XMPP世界的新手。我试图通过安装在同一台机器上的模拟器连接安装在localhost上的Open Fire Server。到目前为止,我能够连接到服务器,但是当尝试从Emulator发送消息到服务器时,使用MessageListener()SMACK类时出错。以下是我得到的错误: -

" Class'从MessageListener派生的匿名类'必须要么声明为抽象的,要么实现抽象方法' processMessage(Message)'在' MessageListener'"

试图谷歌,但无法找出为什么会出现此错误。 以下是我写的代码: -

   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("kenta@fire", "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("jsmith@jivesoftware.com", 
        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 个答案:

答案 0 :(得分:2)

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

建议在使用作为各种网站解决方案一部分的代码之前,先查看课程的最新发布文档。

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