1

我的 AIDL 文件中有一个函数

int getAvailableTokens(out List<String> list);

从主类我想调用这个函数并作为参数给出List<String> mylist命令函数将设置它。我怎么能做到这一点?

已编辑

int getAvailableTokens (List<FidoTokenInfo> list) throws RemoteException {
    // EDITED: The list must be set in this way!!!
    list.addAll(mFidoDsm.getList());
    // THIS WAY IS NOT CORRECT !!!
    // list = mFidoDsm.getList();
    Log.i(TAG, "list .size() = " + list.size()); // here list size is 1.
}


// First this function calles.
public List<FidoTokenInfo> getAllTokens () throws FidoException {
    List<String> tokenList = new ArrayList<String>();;

    try {
       int error = dsmService().getAvailableTokens(tokenList);
       Log.i(TAG, "tokenList.size() = " + tokenList.size()); // here list size is 0.
       return tokenList;
    } catch (RemoteException e) {
    }
}

好吧,我做了一些更改,这是我的代码,如您所见,我getAvailableTokens从函数调用getAllTokens函数并作为参数传递给getAvailableTokens列表tokenList,然后在getAvailableTokens我设置该列表,然后我检查它的大小为 1,但是当我检查列表的大小时tokenList它是 0 但为什么?

4

1 回答 1

1

在您的 .aidl 文件中,您应该添加inout而不是out. 在这种情况下,您应该在主类中初始化列表:

List<String> myList = new ArrayList<String>();
int error = getAvailableTokens(mylist);
int size = myList.size();
于 2012-06-26T18:42:23.733 回答