michelperez
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-18-2019
03:58 PM
How to expose fields obtained inside screen to main thread for a SignIn component
Hi, I'm trying to create a SignIn component, but once I get username and password from the user in my component I can't "export" them back to the main thread. This is what I'm trying right now:
Now, in main.brs I have:
When I set field "password" and I try a `getField` after that I get `invalid`, also nothing is caught in the main thread. Basically what I want is a way to pass login data out of the component. Is this the better approach? What am I doing wrong?
Thanks!!
<component name = "SignInScene" extends = "Scene" >
<script type = "text/brightscript" >
<![CDATA[
sub init()
m.communicator = m.top.findNode("communicator")
m.communicator.addField("password", "roString", true)
...
end sub
sub onPasswordKeyboardBtnSelected(roEvent)
if roEvent.getData() = 0 then
if m.password <> "" and m.password <> invalid then
m.communicator.setField("password", m.password)
...
end if
end if
end sub
<children>
<Label id="communicator"/>
</children>
</component>
Now, in main.brs I have:
screen = CreateObject("roSGScreen")
m.port = [i]CreateObject[/i]("roMessagePort")
screen.setMessagePort(m.port)
scene = screen.CreateScene("SignInScene")
screen.Show()
scene.findNode("communicator").observeField("password", m.port)
while (true)
msg = wait(0, m.port)
msgType = type(msg)
LogToConsole(msgType)
if msgType = "roSGScreenEvent"
if msg.isScreenClosed() then return
end if
end while
When I set field "password" and I try a `getField` after that I get `invalid`, also nothing is caught in the main thread. Basically what I want is a way to pass login data out of the component. Is this the better approach? What am I doing wrong?
Thanks!!
2 REPLIES 2
renojim
Community Streaming Expert
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2019
12:09 AM
Re: How to expose fields obtained inside screen to main thread for a SignIn component
I think you're making it more complicated than it needs to be. Just set the label's text value to the password/username.
In your main thread:
I hope that's enough to get the point across. It may not be the best approach, but it works for me.
-JT
<children>
<Label id="password" translation="[0,0]" text="" visible="false" />
</children>
password = m.top.findNode("password")
...
password.text = "user's password"
In your main thread:
sg = createObject("roSGScreen")
scene = sg.createScene("SignInScene")
sg.Show()
sg.setMessagePort(m.port)
password = scene.findNode("password")
password.observeField("text", m.port)
while(true)
msg = wait(0,m.port)
msgType = type(msg)
print "msgType: ";msgType
if msgType = "roSGScreenEvent" then
if msg.isScreenClosed() then
print "isScreenClosed"
exit while
end if
else if msgType = "roSGNodeEvent" then
passwordText = password.text
end if
end while
I hope that's enough to get the point across. It may not be the best approach, but it works for me.
-JT
Roku Community Streaming Expert
Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.
I am not a Roku employee.
Help others find this answer and click "Accept as Solution."
If you appreciate my answer, maybe give me a Kudo.
I am not a Roku employee.
michelperez
Visitor
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
02-19-2019
08:57 AM
Re: How to expose fields obtained inside screen to main thread for a SignIn component
Hi renojim,[/color]
Thank you so much!!, that worked like a charm, you are the man!. For some reason I had a hard time finding an answer for this, which seems an obvious workflow, Roku samples from the guide are incomplete they show you how to create a keyboard component or a pin dialog but they don't mention how to interact with it, docs are lacking on that area.
Thanks!!!!
Thank you so much!!, that worked like a charm, you are the man!. For some reason I had a hard time finding an answer for this, which seems an obvious workflow, Roku samples from the guide are incomplete they show you how to create a keyboard component or a pin dialog but they don't mention how to interact with it, docs are lacking on that area.
Thanks!!!!