
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Observer callback functions
Parameters can now be passed to observer callback functions (ifSGNodeField).
https://sdkdocs.roku.com/display/sdkdoc ... 04/05/2016
There's no mention of how to use parameters with observeField in the docs. Does anyone have an example?
https://sdkdocs.roku.com/display/sdkdoc/ifSGNodeField
Senior Software Engineer, AOL Alpha

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Observer callback functions
ObserveField("MyField", "AnonymousFunction")
Sub AnonymousFunction
MyFunction(MyField) <-- <Function that I want to call with parameters>
End Sub
Notice that I use MyField as just an example parameter. In this case MyField would be changed to the parameter that I want to set off the Observer. If you need more than one parameter passed these can be achieved through things like using the global variable, registry (not recommended), etc.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Observer callback functions
i don't think you understood the question, your answer does not relate to passing parameters to observer callback functions.
Of course inside a function one can call another function with arguments, that's not the point.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Observer callback functions
this was clarified a few days later by update in the doco page, see this diff for the changes - or just re-read "First Form" sub-section of ifSGNodeField.observeField()
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Observer callback functions
I am running this file in task.xml
<?xml version=“1.0” encoding=“utf-8" ?>
<!-- Copyright 2016 Roku Corp. All Rights Reserved. -->
<component name=“ContentReader” extends=“Task”>
<script type=“text/brightscript”>
<![CDATA[
sub init()
m.top.functionName = “getAPIResponse”
end sub
sub getAPIResponse()
port = CreateObject(“roMessagePort”)
request = CreateObject(“roUrlTransfer”)
request.setRequest(“GET”)
request.setURL(m.top.contenturi)
jsonString = request.GetToString()
jsonParsed = ParseJson(jsonString)
m.top.content = jsonParsed
end sub
]]>
</script>
</component>
And Used this below function in main.brs file
sub Main()
print “in showChannelSGScreen”
m.readXMLContentTask = createObject(“roSGNode”, “ContentReader”)
m.readXMLContentTask.observeField(“content”, “setcontent”)
m.readXMLContentTask.contenturi = “http://www.sdktestinglab.com/Tutorial/content/xmlcontent.xml”
m.readXMLContentTask.control = “RUN”
readData = m.top.content
print “readData”
end sub
but this function is not executed in main.brs file
Can you please help me to execute this function from main.brs Or provide the sample examples
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Re: Observer callback functions
@NicholasStokes, I can't help you run the task from Main(), but there isn't any need to run a task from Main(). Just put the code from task.xml right in Main(). You can use roUrlTransfer in Main(). Also, please use code tags when posting code. It makes it much, much, much easier to read. To find it, you have to expand the toolbar above the edit box for your post and it looks like </>.
sub Main()
print “in showChannelSGScreen”
port = CreateObject(“roMessagePort”)
request = CreateObject(“roUrlTransfer”)
url = "http://www.sdktestinglab.com/Tutorial/content/xmlcontent.xml"
request.setURL(url)
jsonString = request.GetToString()
jsonParsed = ParseJson(jsonString)
end sub
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.