2015-07-21 178 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 –

相關問題