2012-02-22 17 views
2

これは私が問題を再現するために得た最小のスニペットです。2番目のroMessagePortにエラーなしでRokuアプリが終了します

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 

ユーザー名は正しく入力されますが、パスワードを要求する前にメインメニューに戻るだけです。

waiting... 
done waiting 
waiting... 

これは、SDK v4.1のとOSのv4.2.1006です:デバッグ出力は、アプリが)(待つために2回目の呼び出しにborkingされていることを示します。

誰も何が起こっているのか考えていますか? Rokuの開発者フォーラムのユーザーgonzotekから

+0

RokuまたはそのBrightScript言語については、他にご質問がありません。あなたはおそらくもっと良い[devフォーラムへの投稿](http://forums.roku.com/viewforum.php?f=34) – Charles

+2

Heh yeahもやったけど、すべてのタグはどこかで始まる... :) –

答えて

5

回答:

ファサード画面を作成します。最後の画面が閉じられるとすぐに、rokuはアプリを終了します。 最初のキーボード画面を作成し、 をgetStringFromKeyboard関数で閉じます。その時点で 他の画面が開いていないため、Rokuがアプリを強制終了します。 ここでRokuKevinの説明をご覧ください:viewtopic.php?p = 162550#p162550 (注:彼は と書いたときに本当だったかもしれない「画面のちらつき」を参照していますが、今日は常に画面を持つ必要があります あなたのアプリの生活のためにスタックの裏側に開いてください: viewtopic.php?p = 321402#p321402)。

関連する問題