それぞれにポップアップ ウィンドウがあるいくつかの ViewStack 状態を呼び出すメイン アプリケーションがあります。ポップアップ ウィンドウを開かなければ、状態間を問題なく移動できます。ポップアップ ウィンドウを開いて状態を変更しようとするとcurrentState=...
、次のエラーが表示されます。
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at spark.components::Scroller/focusInHandler()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\Scroller.as:2139]
at flash.display::Stage/set focus()
at mx.core::UIComponent/setFocus() [E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:9905]
...
他の人が同じ問題を抱えていることがわかります。たとえば、次のようになります。
http://forums.adobe.com/thread/1031531
http://forums.adobe.com/message/2767130
http://forums.adobe.com/message/3448443
http://forums.adobe.com/thread/655749?tstart=-1
http://forums.adobe.com/thread/801149
http://flex4examples.wordpress.com/2011/05/05/skinnabletextbase-focusmanager-runtime-error-popup/
しかし、推奨されるソリューションを実装する方法がわかりません。含める必要があるように思えます:
import mx.managers.PopUpManager; PopUpManager;
メインアプリケーション内で動作するはずですが、動作しません。
私のアプリケーションには、それぞれを使用して定義された、異なるファイル内の各ビュー ステートがあります<views:View>
。また、すべてのポップアップは、.として定義された個別のファイルです<s:TitleWindow>
。各ファイルには次の行が含まれます。
import mx.managers.PopUpManager;
これは、各ファイルが異なるポップアップ マネージャー (?) を使用していることを意味するのだろうか (?)、それがシングルトンであり、アプリ全体で 1 つだけを使用する必要がある場合 (設定方法は?)。
ポップアップを呼び出すために使用するコードは次のとおりです。
var _popupName:MyTitleWindowFileName = MyTitleWindowFileName(
PopUpManager.createPopUp(this, MyTitleWindowFileName, true));
_popupName.addEventListener(MyAppController.CLOSE_POPUP,onClosePopUp);
PopUpManager.centerPopUp(_popupName); // call popup
メイン アプリケーション ( として定義されているアプリケーション<s:Application>
) が実行されるとき、ViewStack の状態はまだ読み込まれていないことに注意してください (初めて使用するときに読み込まれるため)。ここに原因/結果があるかどうかはわかりません。
ここの「Sparkポップアップウィンドウとの間でデータをやり取りする」セクションのAdobeのサンプルコードに従ってみました。
どんなアイデアでも大歓迎です。