LoginSignup
3
3

More than 5 years have passed since last update.

ActionBarの設定変更をするとメニューが表示されなくなる

Last updated at Posted at 2013-05-28

イマイチよく分かってないんだけど・・・

ActionBarをController上でカスタマイズ(変更)してしまうと、ViewXMLとTSSで定義されたActionBar上のメニューが表示されない・・・っぽい。

<Alloy>
    <Window id="window">
        <Menu platform="android">
            <MenuItem id="menu1" />
            <MenuItem id="menu2" />
        </Menu>
        <Label text="hogehgoe" />
    </Window>
</Alloy>
JSON
"#window": {
    backgroundColor: '#ccc',
    fullscreen: false
},
"MenuItem": {
    showAsAction: Ti.Android.SHOW_AS_ACTION_IF_ROOM,
},
'#menu1': {
    icon: Ti.Android.R.drawable.ic_menu_send,
    title: 'About'
},
'#menu2': {
    icon: Ti.Android.R.drawable.ic_menu_send,
    title: 'Settings'
},

この状態で、何もしなければちゃんとActionBarとメニューは表示される。
でも以下のControllerのようにイジってしまうと、メニューが表示されなくなる。

$.window.addEventListener('open', function() {
    var actionBar = $.window.activity.actionBar;
    actionBar.title = 'My App';
    actionBar.displayHomeAsUp = true;
    actionBar.onHomeIconItemSelected = function() {
        Ti.API.info("Home icon clicked!");
    };
});

色々試してみての現時点での結論

ViewXMLとTSSでActionBar上のメニューを実装するのを諦めた。Controller上でコードによる実装を行えば、ActionBarの設定変更とメニューの表示が両立できる。

// ViewXMLとTSSからメニューに関する記述を全部消した上で・・・
$.window.activity.onCreateOptionsMenu = function(e) { 
    var menu = e.menu; 
    var menuItem1 = menu.add({ 
        title : "Compose", 
        icon : Ti.Android.R.drawable.ic_menu_send,
        showAsAction : Ti.Android.SHOW_AS_ACTION_IF_ROOM 
    }); 
    menuItem1.addEventListener("click", function(e) { 
        Ti.API.info("Action Item1 Clicked!"); 
    }); 
    var menuItem2 = menu.add({ 
        title : "Update", 
        icon : Ti.Android.R.drawable.ic_menu_send,
        showAsAction : Ti.Android.SHOW_AS_ACTION_IF_ROOM 
    }); 
    menuItem2.addEventListener("click", function(e) { 
        Ti.API.info("Action Item2 Clicked!"); 
    }); 

    $.window.activity.actionBar.displayHomeAsUp = true;
    $.window.activity.actionBar.title = 'My App';
};

これならOKだった。よく分からん。

参考:http://developer.appcelerator.com/question/148137/menu-items-are-not-displayed-initially-in-an-action-bar-if-you-have-other-logic-with-action-bar

3
3
1

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
3