[Titanium Mobile]TabGroupのTop LevelでAndroidのMenuを表示

android_menuTitanium SDK 3.1.3.GAに上げたらAndroidのメニューが表示されなくなったので調査したときの覚書。

環境: Titanium SDK 3.1.3.GA

TabGroupの各タブのトップだけ表示されず、下の階層へ画面遷移すれば普通にメニューが表示される。

今までは共通関数で、

win = Titanium.UI.createWindow();
win.activity.onCreateOptionsMenu = function(e) {
    e.menu.add({title: L('menu1')});
});

とやっていた。

どうやらTabGroup直下のwndowにはactivity(≒画面)がないらしい。

Titaniumではactivityを持っているwindowを「heavyweight」windowと呼んでいて、「heavyweight」なwindowを作成するかどうかを条件に応じて判断している。詳しくは下記。

 

TabGroup直下の場合はTabGroupのActivityでonCreateOptionsMenuする必要があるみたい。

tabGroup = Titanium.UI.createTabGroup();
tabGroup.activity.onCreateOptionsMenu = function(e) {
    e.menu.add({title: L('menu1')});
});

 

< Related Posts >