У меня есть функция в файле AIDL
int getAvailableTokens(out List<String> list);
Из основного класса я хочу вызвать эту функцию и List<String> mylist
в качестве аргумента 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) {
}
}
Okey Я внес некоторые изменения, и вот мой код, так как вы можете видеть, что я getAvailableTokens
функцию getAvailableTokens
из функции getAllTokens
и getAllTokens
в качестве аргумента getAvailableTokens
list tokenList
затем в getAvailableTokens
я установил этот список, а затем я проверяю размер, getAvailableTokens
1, но когда Я проверяю размер списка tokenList
но почему?
В вашем файле.aidl вы должны добавить inout
вместо out
. В этом случае в вашем основном классе вы должны инициализировать список:
List<String> myList = new ArrayList<String>();
int error = getAvailableTokens(mylist);
int size = myList.size();