-1

asmack + openfire は、Android IM アプリを開発しています。しかし、友達からメッセージを受け取り、対応するチャットにディスパッチする方法がわかりません。

次の機能がありました:openfireサーバーへの接続とログインの成功(acount A)。次に、「FriendsActivity」ですべての友達を ListView に表示し、アイテムをクリックしてから「ChatActivity」を選択します。「ChatActivity」で、アカウント B (または別のアカウント) へのチャットを作成します。

 chatManager.createChat(B, new MessageListener() {
    @Override
    public void processMessage(Chat chat2, 
               org.jivesoftware.smack.packet.Message msg) {
                       handler.obj = msg; //handler to updata the listview to show message history
            }
  }

このコードは B とのチャットの実装に役立ちますが、A は最初にアイテムをクリックして「ChatActivity」にする必要があります。

「FriendsActivity」でメッセージを受け取り、「C さんから新しいメッセージが届いています」(C さんは A さんの友達)など、さまざまなヒントを与える方法。次に、C アイテムをクリックして 'Chat Activity can show the message from C.

4

1 に答える 1

0

これは実際には複雑な質問であり、考慮すべき点がいくつかあります。

プッシュバックするとアクティビティが破棄されるため、そのチャットのデータを永続的に保存する方法、データベースなどの各アクティビティで利用できる方法が必要になる可能性が高くなります。(それはあなたのハンドラークラスですか??)。

そう

  1. コードに従って、友人のアクティビティにchatManagerを接続して追加します
  2. メッセージを受信したら (processMessage())、メッセージから JID を取得してフレンド リストを更新し、適切なフレンドが見つかるまでアダプター データを循環させ、そのビューを何らかの方法で更新します。(ArrayList のようなアダプターの基本データを循環している場合は、Android がビューをリサイクルするため、リスト内のビューの位置はデータの位置ではないためlist.getFirstVisiblePosition()、ArrayList データ内の位置から減算する必要があることに注意してください)
  3. フレンド リストの各フレンドに onClickListener() を追加します。(カスタム アダプターを使用して、各フレンドを表示します)
  4. onClickListener で、chatActivity に、チャット ボディ オブジェクトとそれが送信されたフレンドの JID を含むインテントを渡します。これは、インテントで chatActivity に JID を渡し、その JID に関連付けられたすべてのメッセージを検索できるため、データベースを使用すると簡単になります。

それが少し役立つことを願っています

于 2013-09-03T04:35:02.473 に答える