[akabana-user:241] ViewStackの2ページ目以降でActionが呼び出せない、 同じ子部品を2つ宣言するとエラーが発生する

[E-MAIL ADDRESS DELETED] [E-MAIL ADDRESS DELETED]
2010年 7月 6日 (火) 14:27:15 JST


こんにちは、フジワラです。
先日から連続の質問で申し訳ありません。

下記の現象について、原因が分かる方がいらっしゃいましたら、アドバイスをお願いできないでしょうか。
現象は2つあり、関連している可能性があると考えて、まとめたメールにしました。

Yui-frameworksの使い方を間違っているか、それ以前にFlexの使い方を間違っていると疑っているのですが
自力で解決できずにおります。

長文になり、大変申し訳ありません。どうかよろしくお願いいたします。


*** 以下、現象の説明になります。 ***

現象1:
ViewStackの2ページ目以降に配置した画面(Yui-frameworksで実装)で、Actionのメソッドが呼び出せない。

プロジェクトの構成は以下です(簡略化してます)。
Srcフォルダ
  Main.mxml
  actionフォルダ
    各画面のaction.as
  helperフォルダ
    各画面のhelper.as
  viewフォルダ
    View1View.mxml
    View2View.mxml <- NavigatorContent型
    View3View.mxml <- NavigatorContent型

View1内にViewStackを用意して、1ページ目にView2を、2ページ目にView3を割り当てました。
(View2View,View3ViewのルートはNavigatorContent型です)

*** View1Viewのイメージ ***
<s:Group>
    <s:Panel>
        <mx:ViewStack id="viewstack1">
            <view:View2View id="stack1"/>
            <view:View3View id="stack2"/>
        </mx:ViewStack>
    </s:Panel>
<s:Group>

上記のようにして、アクティブなStackを切り替えて動作を確認すると
stack1は正常に動作する(View->Actionの呼び出しができる)のですが、stack2はView->アクションの呼出ができませんでした。
stack1とstack2の行を入れ替える(stack2を1ページ目にする)とstack2も正常に動作するので、View2,View3の実装は正しいと考えています。


現象2:
画面に同じ子要素(Yui-frameworksで実装)を複数表示しようとすると例外になる。

プロジェクト構成は現象1と同様です。
親画面(Main.mxmlまたは、View1View.mxml)に、同部品(View2View)を2つ宣言して起動するとエラーになります。

*** View1Viewに宣言した場合のイメージ ***
<s:Group>
    <view:View2View id="aaa"/>
    <view:View2View id="bbb"/>
<s:Group>

*** 表示されたエラーのスタックトレース ***
Error: roorView
	at org.seasar.akabana.yui.framework.core::ViewComponentRepository$/addComponent()
	at org.seasar.akabana.yui.framework.core::YuiFrameworkContainer/processRegisterView()
	at org.seasar.akabana.yui.framework.core::YuiFrameworkContainer/processRegisterComponent()
	at org.seasar.akabana.yui.framework.core::YuiFrameworkContainer/doRegisterComponent()
	at org.seasar.akabana.yui.framework.core::YuiFrameworkContainer/addedToStageHandler()
	at flash.display::DisplayObjectContainer/addChildAt()
	at mx.managers::SystemManager/preloader_preloaderDoneHandler()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\SystemManager.as:2497]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.preloaders::Preloader/displayClassCompleteHandler()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\preloaders\Preloader.as:555]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.preloaders::SparkDownloadProgressBar/initCompleteHandler()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\preloaders\SparkDownloadProgressBar.as:1078]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.preloaders::Preloader/dispatchAppEndEvent()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\preloaders\Preloader.as:358]
	at mx.preloaders::Preloader/appCreationCompleteHandler()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\preloaders\Preloader.as:563]
	at flash.events::EventDispatcher/dispatchEventFunction()
	at flash.events::EventDispatcher/dispatchEvent()
	at mx.core::UIComponent/dispatchEvent()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UIComponent.as:12266]
	at mx.core::UIComponent/set initialized()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\core\UIComponent.as:1577]
	at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:759]
	at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.0.0\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]

以上です。


akabana-user メーリングリストの案内