这是我能够重现这个问题的最小片段。
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()时borking:
waiting...
done waiting
waiting...
这是SDK v4.1和OS v4.2.1006。
有人知道发生了什么事吗?
答案 0 :(得分:5)
Roku开发者论坛上用户gonzotek的回答:
创建立面屏幕。 roku之后立即退出应用程序 最后一个屏幕关闭。您还可以创建第一个键盘屏幕 在getStringFromKeyboard函数中关闭它,因为没有 其他屏幕在那一刻打开,那就是Roku杀死应用程序的时候。 请参阅RokuKevin的解释:viewtopic.php?p = 162550#p162550 (注意:他指的是'屏幕闪烁',这可能是真的 他写道,但现在要求总是有一个屏幕 在应用程序的生命周期中,在堆栈后面打开: viewtopic.php?p值= 321402#p321402)。