2

这是我能够重现该问题的最小片段。

Sub Main()
    u = getStringFromKeyboard("Enter username")
    p = getStringFromKeyboard("Enter password")
End Sub

Function getStringFromKeyboard(message = "" As String) As String
    result = ""
    port = CreateObject("roMessagePort")
    screen = CreateObject("roKeyboardScreen")
    screen.SetMessagePort(port)
    screen.SetDisplayText(message)
    screen.AddButton(1, "OK")
    screen.Show()
    while true
        print "waiting..."
        msg = wait(0, port)
        print "done waiting"
        if type(msg) = "roKeyboardScreenEvent" then
            if msg.GetIndex() = 1 then
                result = screen.GetText()
                exit while
            end if
        end if
    end while
    screen.Close()
    return result
End Function

Roku 将正确提示输入用户名,但会在提示输入密码之前退出主菜单。调试输出表明应用程序在第二次调用 wait() 时出现故障:

waiting...
done waiting
waiting...

这是 SDK v4.1 和 OS v4.2.1006。

有人知道发生了什么吗?

4

1 回答 1

5

Roku 开发者论坛上用户 gonzotek 的回答:

创建立面屏幕。roku 在最后一个屏幕关闭后立即退出应用程序。您创建第一个键盘屏幕并在 getStringFromKeyboard 函数中将其关闭,由于此时没有其他屏幕打开,这就是 Roku 终止应用程序的时候。请在此处查看 RokuKevin 的解释:viewtopic.php?p=162550#p162550(注意:他指的是“屏幕闪烁”,他写的时候可能是这样,但现在要求屏幕始终卡在后面应用程序生命周期中的堆栈:viewtopic.php?p=321402#p321402)。

于 2012-02-22T14:31:28.550 回答