2013-12-17 55 views
-2

我正在尝试按照教程创建xmpp聊天。 但是,它一直显示“R无法解析为变量”。在插入import.android.R之后,错误被移至所有变量。说明所有变量不能解析为变量。“variable”无法解析为变量

下面是代码:

package com.demo.xmppchat; 

import java.util.ArrayList; 
import java.util.Collection; 

import org.jivesoftware.smack.ConnectionConfiguration; 
import org.jivesoftware.smack.PacketListener; 
import org.jivesoftware.smack.Roster; 
import org.jivesoftware.smack.RosterEntry; 
import org.jivesoftware.smack.SASLAuthentication; 
import org.jivesoftware.smack.XMPPConnection; 
import org.jivesoftware.smack.XMPPException; 
import org.jivesoftware.smack.filter.MessageTypeFilter; 
import org.jivesoftware.smack.filter.PacketFilter; 
import org.jivesoftware.smack.packet.Message; 
import org.jivesoftware.smack.packet.Packet; 
import org.jivesoftware.smack.packet.Presence; 
import org.jivesoftware.smack.util.StringUtils; 

import android.app.Activity; 
import android.R; 
import android.app.ProgressDialog; 
import android.os.Bundle; 
import android.os.Handler; 
import android.util.Log; 
import android.view.View; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ListView; 

public class XMPPChatDemoActivity extends Activity { 

    public static final String HOST = "talk.google.com"; 
    public static final int PORT = 5222; 
    public static final String SERVICE = "gmail.com"; 
    public static final String USERNAME = "[email protected]"; 
    public static final String PASSWORD = "xxx"; 

    private XMPPConnection connection; 
    private ArrayList<String> messages = new ArrayList<String>(); 
    private Handler mHandler = new Handler(); 

    private EditText recipient; 
    private EditText textMessage; 
    private ListView listview; 

    /** Called when the activity is first created. */ 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     recipient = (EditText) this.findViewById(R.id.toET); 
     textMessage = (EditText) this.findViewById(R.id.chatET); 
     listview = (ListView) this.findViewById(R.id.listMessages); 
     setListAdapter(); 

     // Set a listener to send a chat text message 
     Button send = (Button) this.findViewById(R.id.sendBtn); 
     send.setOnClickListener(new View.OnClickListener() { 
      public void onClick(View view) { 
       String to = recipient.getText().toString(); 
       String text = textMessage.getText().toString(); 

       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(connection.getUser() + ":"); 
        messages.add(text); 
        setListAdapter(); 
       } 
      } 
     }); 

     connect(); 
    } 

    /** 
    * Called by Settings dialog when a connection is establised with the XMPP 
    * server 
    * 
    * @param connection 
    */ 
    public void setConnection(XMPPConnection connection) { 
     this.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 = StringUtils.parseBareAddress(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.listitem, messages); 
     listview.setAdapter(adapter); 
    } 

    @Override 
    protected void onDestroy() { 
     super.onDestroy(); 
     try { 
      if (connection != null) 
       connection.disconnect(); 
     } catch (Exception e) { 

     } 
    } 

    public void connect() { 

     final ProgressDialog dialog = ProgressDialog.show(this, 
       "Connecting...", "Please wait...", false); 

     Thread t = new Thread(new Runnable() { 

      @Override 
      public void run() { 
       // Create a connection 
       ConnectionConfiguration connConfig = new ConnectionConfiguration(
         HOST, PORT, SERVICE); 
       XMPPConnection connection = new XMPPConnection(connConfig); 

       try { 
        connection.connect(); 
        Log.i("XMPPChatDemoActivity", 
          "Connected to " + connection.getHost()); 
       } catch (XMPPException ex) { 
        Log.e("XMPPChatDemoActivity", "Failed to connect to " 
          + connection.getHost()); 
        Log.e("XMPPChatDemoActivity", ex.toString()); 
        setConnection(null); 
       } 
       try { 
        // SASLAuthentication.supportSASLMechanism("PLAIN", 0); 
        connection.login(USERNAME, PASSWORD); 
        Log.i("XMPPChatDemoActivity", 
          "Logged in as " + connection.getUser()); 

        // Set the status to available 
        Presence presence = new Presence(Presence.Type.available); 
        connection.sendPacket(presence); 
        setConnection(connection); 

        Roster roster = connection.getRoster(); 
        Collection<RosterEntry> entries = roster.getEntries(); 
        for (RosterEntry entry : entries) { 
         Log.d("XMPPChatDemoActivity", 
           "--------------------------------------"); 
         Log.d("XMPPChatDemoActivity", "RosterEntry " + entry); 
         Log.d("XMPPChatDemoActivity", 
           "User: " + entry.getUser()); 
         Log.d("XMPPChatDemoActivity", 
           "Name: " + entry.getName()); 
         Log.d("XMPPChatDemoActivity", 
           "Status: " + entry.getStatus()); 
         Log.d("XMPPChatDemoActivity", 
           "Type: " + entry.getType()); 
         Presence entryPresence = roster.getPresence(entry 
           .getUser()); 

         Log.d("XMPPChatDemoActivity", "Presence Status: " 
           + entryPresence.getStatus()); 
         Log.d("XMPPChatDemoActivity", "Presence Type: " 
           + entryPresence.getType()); 
         Presence.Type type = entryPresence.getType(); 
         if (type == Presence.Type.available) 
          Log.d("XMPPChatDemoActivity", "Presence AVIALABLE"); 
         Log.d("XMPPChatDemoActivity", "Presence : " 
           + entryPresence); 

        } 
       } catch (XMPPException ex) { 
        Log.e("XMPPChatDemoActivity", "Failed to log in as " 
          + USERNAME); 
        Log.e("XMPPChatDemoActivity", ex.toString()); 
        setConnection(null); 
       } 

       dialog.dismiss(); 
      } 
     }); 
     t.start(); 
     dialog.show(); 
    } 
} 

这里是错误列表:

Description Resource Path Location Type 
toET cannot be resolved or is not a field XMPPChatDemoActivity.java /XMPPChatDemo/src/com/demo/xmppchat line 54 Java Problem 
main cannot be resolved or is not a field XMPPChatDemoActivity.java /XMPPChatDemo/src/com/demo/xmppchat line 52 Java Problem 
chatET cannot be resolved or is not a field XMPPChatDemoActivity.java /XMPPChatDemo/src/com/demo/xmppchat line 55 Java Problem 
listMessages cannot be resolved or is not a field XMPPChatDemoActivity.java /XMPPChatDemo/src/com/demo/xmppchat line 56 Java Problem 
sendBtn cannot be resolved or is not a field XMPPChatDemoActivity.java /XMPPChatDemo/src/com/demo/xmppchat line 60 Java Problem 
listitem cannot be resolved or is not a field XMPPChatDemoActivity.java /XMPPChatDemo/src/com/demo/xmppchat line 117 Java Problem 

我已经试过项目 - >干净,但它仍然没有工作。

+0

我认为你输入了错误的文件。尝试删除'import android.R;'并添加'import com.demo.xmppchat.R;' – Fllo

+0

删除import android.R; –

+0

可能重复的[R无法解析 - Android错误](http://stackoverflow.com/questions/885009/r-cannot-be-resolved-android-error) – Geobits

回答

1

取下进口

import android.R; 

没有必要为低于进口,除非其在这种情况下,你使用进口packagename.R不同的包;

import com.demo.xmppchat.R; 
+0

@ user2683347使用'import com.demo.xmppchat。 R;' – Raghunandan

+0

它不工作..导入线是错误说它没有解决。 – elvirachrisanty

+1

**“use import com.demo.xmppchat.R;”**应该永远不需要导入R.java类,除非它在不同的包中。否则将隐含地完成。 – Squonk

0

删除此导入

import android.R; 

,只按按Ctrl + + Ø

它会要求我进口f任何产生冲突

如果它要求android.R;com.demo.xmppchat.R;

然后选择com.demo.xmppchat.R