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()の2回目の呼び出しで中断していることを示しています。

waiting...
done waiting
waiting...

これはSDKv4.1およびOSv4.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 に答える