flex TabNavigatorの切り替え
2011/07/21
何かの処理をしたときに併せてTabNavigatorを切り替えたい。
任意の場所で下記。
[TabNavigatorのid].selectedIndex = 1;
メモ
やりたいことは下記。
「DataGrid」にDBの内容を出力。
「TabNavigator」で「新規追加用のフォーム・タブ」「修正用のフォーム・タブ」を追加。
「DataGrid」のデータを選択したら、「修正用のフォーム・タブ」を「開く・値を入れる」を実行したい。
「TabNavigator」で「新規追加用のフォーム・タブ」「修正用のフォーム・タブ」を追加。
「DataGrid」のデータを選択したら、「修正用のフォーム・タブ」を「開く・値を入れる」を実行したい。
表示されないエラーの防止
詳しくは分からないけど「[mx:TabNavigator]の描画が終了するまで次に進まない」ってことになるのかな。
「mx:TabNavigator」に「creationPolicy="all"」を追加。
最初のソース(TabNavigator切替えを記載する前)
解釈が根本的に間違ってたので理解するのに苦労した。
下記は「application1_creationCompleteHandler()」が実行されたら「dataGrid.addEventListener()」を実行という意味。
次に「dataGrid.addEventListener()」は「GridSelectionEvent.SELECTION_CHANGE」になったら「onSelectedItem()」を実行という意味になるらしい。
コレを「application1_creationCompleteHandler()」が実行されたら「onSelectedItem()」を実行すると勘違いしてた。
- // データグリッドが選択されたときの処理
- protected function application1_creationCompleteHandler(event:FlexEvent):void
- {
- dataGrid.addEventListener(GridSelectionEvent.SELECTION_CHANGE, onSelectedItem);
- }
- // データグリッドが選択されたら、修正用フォームに値を表示する
- private function onSelectedItem(e:GridSelectionEvent):void{
- ~~~
- }
TabNavigator切替えを記載したソース
- // データグリッドが選択されたときの処理
- protected function application1_creationCompleteHandler(event:FlexEvent):void
- {
- dataGrid.addEventListener(GridSelectionEvent.SELECTION_CHANGE, onSelectedItem);
- //最初は、ココに記載した。
- //[TabNavigatorのid].selectedIndex = 1;
- }
- // データグリッドが選択されたら、修正用フォームに値を表示する
- private function onSelectedItem(e:GridSelectionEvent):void{
- ~~~
- // 0番目でなく、1番目を開くようにしたい
- [TabNavigatorのid].selectedIndex = 1;
- }
私は「「application1_creationCompleteHandler()」が実行されたら「onSelectedItem()」を実行する」と勘違いしていた。
そのため「application1_creationCompleteHandler()」の中の最後に「[TabNavigatorのid].selectedIndex」を入れていた。
下記のように勘違いしてた。
「application1_creationCompleteHandler()」が実行されたら「onSelectedItem()」を実行する。
その次に「[TabNavigatorのid].selectedIndex」を実行する。
その次に「[TabNavigatorのid].selectedIndex」を実行する。
実際は下記のような感じ。
「application1_creationCompleteHandler()」が実行されたら「dataGrid.addEventListener()」を実行。
「GridSelectionEvent.SELECTION_CHANGE」にならなくても「[TabNavigatorのid].selectedIndex」を実行する。
「GridSelectionEvent.SELECTION_CHANGE」にならなくても「[TabNavigatorのid].selectedIndex」を実行する。