亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

獲取 XMPPConnection 的空指針異常

獲取 XMPPConnection 的空指針異常

慕容3067478 2021-05-31 10:05:37
我在本地主機上運行 openfire 服務器,Smack 版本 4.2.4.GetAllContacts() 方法中的異常。下面是我的類 XmppConnection 的代碼,它擴展了類 org.jivesoftware.smack.ConnectionListener。  public class XmppConnection implements ConnectionListener{  private  XMPPTCPConnection mConnection;  public List<Contact> getAllContacts() throws SmackException.NotLoggedInException, InterruptedException, SmackException.NotConnectedException {    Log.d(TAG,"getAllContats called()");    List<Contact> contacts = new ArrayList<>();    if(XmppConnectService.sConnectionState == ConnectionState.AUTHENTICATED){        Roster roster = Roster.getInstanceFor(mConnection);  //exception here            Collection<RosterEntry> entries = roster.getEntries();            Presence presence;            for (RosterEntry entry : entries) {                Contact c = new Contact(entry.getJid().toString());                presence = roster.getPresence(entry.getJid());                contacts.add(c);                       }    return contacts;}public XmppConnection( Context context){    mApplicationContext = context.getApplicationContext();    String jid = PreferenceManager.getDefaultSharedPreferences(mApplicationContext)            .getString("xmpp_jid",null);    mPassword = PreferenceManager.getDefaultSharedPreferences(mApplicationContext)            .getString("xmpp_password",null);    if( jid != null)    {        mUsername = jid.split("@")[0];        mServiceName = jid.split("@")[1];    }else    {        mUsername ="";        mServiceName="";    }}上面的代碼在 logcat 中顯示了這個錯誤:java.lang.NullPointerException: XMPPConnection must not be null我從另一個類調用 getAllContacts() 作為XmppConnection xmpp = new XmppConnection(this);contacts = xmpp.getAllContacts();getAllContacts() 方法是從另一個活動調用的,并在 authenticated() 方法之后調用。因為它是在 authenticated() 方法之后調用的,所以 mConnection 應該已經初始化了。
查看完整描述

2 回答

?
有只小跳蛙

TA貢獻1824條經驗 獲得超8個贊

為 XmppConnection 類創建一個新對象會將其變量初始化為 null。將 XMPPTCPConnection 聲明為靜態工作:

private static XMPPTCPConnection mConnection;


查看完整回答
反對 回復 2021-06-02
?
揚帆大魚

TA貢獻1799條經驗 獲得超9個贊

如您的代碼所示,您在方法 connect() 內初始化 mConnection 變量。并且您的方法authenticated() 不會調用connect() 方法。您能否確保在調用方法 authenticated() 之前或在方法內調用 connect() 方法


查看完整回答
反對 回復 2021-06-02
  • 2 回答
  • 0 關注
  • 235 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號