Flex 3:TypeError#2007& Deeplinking

时间:2010-09-25 14:13:05

标签: flex deep-linking

当应用程序启动时,我正在收到Flex错误#2007。

TypeError: Error #2007: Parameter child must be non-null.
    at flash.display::DisplayObjectContainer/getChildIndex()
    at mx.core::Container/getChildIndex()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\core\Container.as:2411]
    at mx.containers::ViewStack/set selectedChild()[C:\autobuild\3.2.0\frameworks\projects\framework\src\mx\containers\ViewStack.as:557]
    at property/parseUrl()[/Users/myname/Documents/Flex Builder 3/property/src/property.mxml:8803]
    at property/initBrowserManager()[/Users/myname/Documents/Flex Builder 3/property/src/property.mxml:8749]
    at property/___property_Application1_creationComplete()[/Users/myname/Documents/Flex Builder 3/property/src/property.mxml:19]

我正在尝试深层链接以正常工作。 Adobe Flex论坛上的Bhasker Chari非常友好地帮助我完成以下代码:

private function parseUrl(e:BrowserChangeEvent = null):void {


  var o:Object = URLUtil.stringToObject(browserManager.fragment);

  var j:Object = o.view;

  var f:String = String(j);

  var c:String = f.replace(/-/g,"_");

  var t:Container = mainViewStack.getChildByName(c) as Container;

  mainViewStack.selectedChild = t;
  }

基本上,我使用browserManager.fragment,将其转换为字符串,用下划线替换短划线,将其转换为容器,然后使用它在mainViewStack上设置selectedChild。

但是,当它初始化时,它表示没有子参数。我该如何解决这个问题?

谢谢。

-Laxmidi

1 个答案:

答案 0 :(得分:0)

好,

我明白了。我需要补充一下:

if(t!= null){mainViewStack.selectedChild = t}   else {mainViewStack.selectedIndex = 0}

尚未创建儿童。

谢谢。

-Laxmidi