首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AllJoyn BusSignalReply错误

AllJoyn BusSignalReply错误
EN

Stack Overflow用户
提问于 2016-04-24 03:18:57
回答 1查看 82关注 0票数 1

我正在构建一个使用AllJoyn框架的安卓应用程序。基本上,我需要一个局域网通信,以便创建大厅,并允许加入他们的人,玩特定的游戏。

为此,我创建了一个对象大堂及其对应的LobbyInterface。我现在所做的是:-An用户可以创建一个大厅,它显示在所有连接设备的列表中。-An用户可以选择一个已创建的大厅并加入其中。

我现在想要的是当用户加入大厅时刷新列表。为此,我需要获取大厅中的用户列表。我正试着从LobbyInterface那里得到这份名单。我知道我不能通过总线获得复杂的对象(如果它们不是按结构构建的),但我试图获得一个简单的字符串数组。

这是我的代码:

代码语言:javascript
复制
LobbyClass:

    public class Lobby implements LobbyInterface, BusObject {
    private String[] lstUsers;
    private String name;

    public Lobby(String name){
        this.name = name;
        lstUsers = new String[4];
    }

    /**
    extra code here
    **/

    @Override
    public String[] getLstUsers() throws BusException {
        return lstUsers;
    }

}

LobbyInterface类:

代码语言:javascript
复制
@BusInterface(name = "com.example.cantor.pruebamultiplayerv3.lobby", announced = "true")
public interface LobbyInterface {


    @BusMethod(replySignature = "as")
    String[] getLstUsers() throws BusException;
}

这是我调用它的方法,形成一个UsersFacade类:

代码语言:javascript
复制
public String[] getLstUsers(){
            try {
                Log.d(TAG, "USER could get users list");
                return lobbyI.getLstUsers();
            } catch (BusException e) {
                Log.d(TAG, "USER error getting users lst");
                e.printStackTrace();
            }
        return null;
    }

这总是返回null,错误是:

代码语言:javascript
复制
04-23 21:09:47.327 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err: org.alljoyn.bus.ErrorReplyBusException: org.alljoyn.Bus.ErStatus
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err:     at org.alljoyn.bus.ProxyBusObject.methodCall(Native Method)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err:     at org.alljoyn.bus.ProxyBusObject.access$300(ProxyBusObject.java:35)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err:     at org.alljoyn.bus.ProxyBusObject$Handler.invoke(ProxyBusObject.java:264)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err:     at java.lang.reflect.Proxy.invoke(Proxy.java:397)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err:     at $Proxy2.getLstUsers(Unknown Source)
04-23 21:09:47.346 5864-5864/com.example.cantor.pruebamultiplayerv3 W/System.err:     at com.example.cantor.pruebamultiplayerv3.UsersFacade.getLstUsers(UsersFacade.java:70)

我知道我可以返回指定位置和类型的结构。但是我已经看到我可以使用简单的字符串数组:https://allseenalliance.org/docs/api/java/org/alljoyn/bus/annotation/Signature.html

我在这里阅读了其他答案,但这些答案是针对复杂数据的,比如下面这个:signature get error on Alljoyn framework?

我的代码出了什么问题?有其他选择吗?

非常感谢您的关注!

EN

回答 1

Stack Overflow用户

发布于 2016-04-24 04:29:35

不要紧。我只是发现了错误。我正在处理一个空的列表(一些插槽有一个空,因为我试图填充这个列表)。我用空字符串填充了它,现在它起作用了.

代码语言:javascript
复制
public Lobby(String name){
        this.name = name;
        lstUsers = new String[4];
        for (int i = 0; i <=3; i++){
            lstUsers[i] = "";
        }
    }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36815326

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档