Forum Discussion

neowinston's avatar
neowinston
Visitor
9 years ago

Cannot run Task

I'm trying to run the example from here without success.

Here is the code:


m.getHomeOptionsList = createObject("roSGNode", "getLabelListContent")
m.getHomeOptionsList.setField("uri", "http://www.sdktestinglab.com/homeoptionslistcontent.xml")
m.getHomeOptionsList.observeField("content", "showhomeoptionslist")
m.getHomeOptionsList.functionName = "showhomeoptionslist"
m.getHomeOptionsList.control = "RUN"



<?xml version = "1.0" encoding = "utf-8" ?>
 
<!--********** Copyright 2015 Roku Corp.  All Rights Reserved. **********-->
 
<component name = "getLabelListContent" extends = "Task" >
 
<interface>
  <field id = "uri" type = "uri" />
  <field id = "content" type = "node" />
</interface>
 
<script type = "text/brightscript" >
 
  <![CDATA[
 
  sub init()
    m.top.functionName = "getContent"
  end sub
 
  sub getContent()
    content = createObject("roSGNode", "ContentNode")
    contentxml = createObject("roXMLElement")
 
    readInternet = createObject("roUrlTransfer")
    readInternet.setUrl(m.top.uri)
    contentxml.parse(readInternet.GetToString())
 
    if contentxml.getName() = "listcontent"
      for each item in contentxml.GetNamedElements("item")
        attributes = item.getAttributes()
        item = {
          text: attributes.text
          }
        listitem = content.createChild("ContentNode")
        listitem.title = item.text
      end for
    end if
 
    m.top.content = content
  end sub
 
  ]]>
 
  </script>
 
</component>


I'm getting this error:


BRIGHTSCRIPT: ERROR: roSGNode: Failed to create roSGNode with type getLabelListContent: pkg:/components/screens/DetailsScreen/DetailsScreen.brs(101)

BrightScript Micro Debugger.
Enter any BrightScript statement, debug commands, or HELP.

Suspending threads...
Thread selected:  1*   ...ailsScreen/DetailsScreen.brs(102)    m.getHomeOptionsList.setField("uri", "http://www.sdktestingl

Current Function:
100:  sub runXMLTask()
101:          m.getHomeOptionsList = createObject("roSGNode", "getLabelListContent")
102:*         m.getHomeOptionsList.setField("uri", "http://www.sdktestinglab.com/homeoptionslistcontent.xml")
103:          m.getHomeOptionsList.observeField("content", "showhomeoptionslist")
104:          m.getHomeOptionsList.functionName = "showhomeoptionslist"
105:          m.getHomeOptionsList.control = "RUN"
106:  end sub
Interface not a member of BrightScript Component (runtime error &hf3) in [color=#0080e1][u]pkg:/components/screens/DetailsScreen/DetailsScreen.brs(102)
102:         m.getHomeOptionsList.setField("uri", "http://www.sdktestinglab.com/homeoptionslistcontent.xml")


What Am I doing wrong? How do I fix this problem. Thanks for your help!

5 Replies

  • From the docs, emphasis mine:
    Sets the value of the subject node field identified by fieldName to value. This will fail and stop script execution if the value is not of the appropriate type. Returns true if the field is successfully set, false otherwise.


    Looks like a typo in the the getLabelListContent component definition. I have no idea what a "uri" type is, is that a valid BrightScript data type? Change "uri" to "string". 

    <interface>
      <field id = "uri" type = "string" />
      <field id = "content" type = "node" />
    </interface>
    • developer34's avatar
      developer34
      Channel Surfer

      I am also having same problem in my code can you please help me

  • Hello Tim,

    Thanks for your reply. 

    I've modified the code as you suggested, but I'm still having the same error:


    101:          m.getHomeOptionsList = createObject("roSGNode", "getLabelListContent")
    m.getHomeOptionsList.setField("uri", "http://www.sdktestinglab.com/homeoptionslistcontent.xml")
    103:          m.getHomeOptionsList.observeField("content", "showhomeoptionslist")
    104:          m.getHomeOptionsList.functionName = "showhomeoptionslist"
    105:          m.getHomeOptionsList.control = "RUN"
    106:  end sub
    Interface not a member of BrightScript Component (runtime error &hf3) 


    Any other suggestion? Someone said that I'd have to run the code on the Main Thread but I have no idea about how to do that. 
  • check to see if the component is created successfully:
    m.getHomeOptionsList = createObject("roSGNode", "getLabelListContent")
    ? "DID THIS WORK???", m.getHomeOptionsList