我的菜单有两个问题。 菜单由.xml文件创建。
示例:
<Menu>
<MenuItem id = "search" onclick = "search" />
<MenuItem id = "add" onclick = "add" />
</ Menu>
1)第一个问题是有时奇怪的是菜单没有加载,也就是说,看不到按钮。 你能告诉我原因吗?
2)第二个问题是我的menuItem字段通常不可见,只有确定字段中的条件必须是可见的。 你能告诉我怎样才能进入这个领域。
.XML
<MenuItem id = "profile" />
.tss
"#profile[platform=android]": {
title: "Profile",
icon: "/global/profile.png"
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS,
visible: false
}
的.js
$ .profile.visible = True;
错误消息:无法将属性设置为undefined的可见。
我为我糟糕的英语道歉。
谢谢。
编辑:
示例:
var activity = $ .index.activity;
activity.onPrepareOptionsMenu = function (e) {
var favoriteGroup e.menu.add = ({
title: "Profile",
icon: "/global/profile.png"
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS,
});
favoriteGroup.addEventListener ('click', function () {
Alloy.createController ("favorite_group", args) .getView (). Open ();
});
};
activity.invalidateOptionsMenu ();
答案 0 :(得分:3)
您需要重新加载Alloy XML中创建的菜单。大多数人在窗口的开放事件中在.js文件中创建菜单,这样只有在窗口正确打开后才能创建它们:
要在.js文件中创建菜单,请执行以下操作:
- 仅使用window.js的解决方案
var searchMenu, addMenu;
$.window.addEventListener('open', function () {
var activity = $.window.activity;
activity.onCreateOptionsMenu = function (e) {
searchMenu = e.menu.add({
title: 'Search',
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS
});
searchMenu.addEventListener('click', function () {
// open my profile here or do other tasks
});
addMenu = e.menu.add({
title: 'Add',
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS
});
};
// this is the code to validate menu items once they are added into an activity
activity.invalidateOptionsMenu();
});
- 使用window.xml + window.js的解决方案
所以,解决你的问题没有。 1,您可能需要在该xml的控制器文件中调用此代码(活动仅在打开窗口时可用,因此请使用open事件):
<强> window.xml 强>
<Menu platform="android">
<MenuItem id="MENU_SEARCH" title="Search" onClick='search' showAsAction="Ti.Android.SHOW_AS_ACTION_ALWAYS" />
<MenuItem id="MENU_ADD" title="Add" onClick='add' showAsAction="Ti.Android.SHOW_AS_ACTION_ALWAYS" />
</Menu>
<强> window.js 强>
$.window.addEventListener('open', function () {
$.window.activity.invalidateOptionsMenu();
});
可能是由于两个原因:
<强> window.js 强>
$.window.addEventListener('open', function () {
setTimeout(function () {
$.profile.visible = true;
}, 400);
});
<强> .tss 强>
"#profile[platform=android]": {
title: "Profile",
icon: "/global/profile.png",
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS,
visible: false
}