在AndroLua中使用LuaJava将String arg传递给Lua方法

时间:2013-06-11 14:45:02

标签: android luajava androlua

我有一个在Java String中定义的Lua函数,我想传递一个String arg

String luaCode = "function hello(name) return 'Hello ' + name +'!' end";

执行代码

public String runGreetingFromLua(String src, String arg) throws LuaException {
    L = LuaStateFactory.newLuaState();
    L.openLibs();
    L.setTop(0);
    int ok = L.LloadString(src);
    if (ok == 0) {
        L.getGlobal("debug");
        L.getField(-1, "traceback");
        L.remove(-2);
        L.insert(-2);
        L.getGlobal("hello");
        L.pushString(arg);
        ok = L.pcall(1, 0, -2);
        if (ok == 0) {
            String res = output.toString();
            output.setLength(0);
            return res;
        }
    }
    throw new LuaException(errorReason(ok) + ": " + L.toString(-1));
}

获取Unknown error 5: error in error handling

我对lua和luajava完全不熟悉,我确信这个简单的例子是不了解LauState对象是如何工作的,java文档并不令人惊讶(或者我错过了一些非常新手的东西)。如果我从lua代码中调用hello函数并使用print方法,我就能得到一个返回值。我正在使用AndroLua

在Android设备上执行

1 个答案:

答案 0 :(得分:0)

通过删除luajava示例中所述的一些错误处理代码来管理以实现此工作,这些示例似乎会干扰并将对L.LLloadString的调用交换为L.LdoString(src);L.pcall到{{ 1}}。

L.call