Javascript 钛合金不加载菜单和菜单项可见/不可见
我对菜单有两个问题。 菜单由.xml文件创建 例如:Javascript 钛合金不加载菜单和菜单项可见/不可见,javascript,titanium,appcelerator,titanium-alloy,Javascript,Titanium,Appcelerator,Titanium Alloy,我对菜单有两个问题。 菜单由.xml文件创建 例如: <Menu> <MenuItem id = "search" onclick = "search" /> <MenuItem id = "add" onclick = "add" /> </ Menu> .js 错误消息:无法设置未定义的可见属性 我为我的英语不好道歉 多谢各位 编辑: 例如: var activity = $ .index.activity;
<Menu>
<MenuItem id = "search" onclick = "search" />
<MenuItem id = "add" onclick = "add" />
</ Menu>
.js
错误消息:无法设置未定义的可见属性
我为我的英语不好道歉
多谢各位
编辑:
例如:
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 ();
问题1的解决方案:
您需要重新加载在Alloy XML中创建的菜单。大多数人在窗口的“打开事件”中的.js文件中创建菜单,以便只有在正确打开窗口后才能创建菜单:
要在.js文件中创建菜单,请执行以下操作:
-仅使用window.js的解决方案
-使用window.xml+window.js的解决方案
$.window.addEventListener('open', function () {
setTimeout(function () {
$.profile.visible = true;
}, 400);
});
"#profile[platform=android]": {
title: "Profile",
icon: "/global/profile.png",
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS,
visible: false
}
因此,要解决问题1,您可能需要在该xml的控制器文件中调用此代码(活动仅在打开窗口后可用,因此请使用open event):
window.xml
问题2的解决方案:
这可能是由于两个原因:
- 你的tss没有像你在问题中写的那样正确
- 您甚至在打开$.profile菜单项之前就已经在访问它了。(请参见解决方案1中的代码)。因此,在设置属性时,请在窗口打开事件中设置超时
$.window.addEventListener('open', function () {
setTimeout(function () {
$.profile.visible = true;
}, 400);
});
"#profile[platform=android]": {
title: "Profile",
icon: "/global/profile.png",
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS,
visible: false
}
.tss
$.window.addEventListener('open', function () {
setTimeout(function () {
$.profile.visible = true;
}, 400);
});
"#profile[platform=android]": {
title: "Profile",
icon: "/global/profile.png",
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS,
visible: false
}
我非常感谢你回答了我的问题。我按你说的做了尝试,但根本不起作用。原因是“onCreateOptions菜单”,删除所有创建为带有.xml的菜单的内容。所以我采用了“onPrepareOptionsMenu”作为解决方案,它似乎目前正在工作。但有一个问题,不知道如何解释原因。它会在菜单上显示两次通过js代码创建的菜单项。在您看来,这个问题的原因是什么?我已经添加并修改了我的代码以匹配您的代码。请查看上面的代码,并尝试了解如何在Android中创建菜单项,以及在某些情况下,如果菜单项没有使用XML显示,则需要如何重新创建菜单项。在XML中创建菜单项时,请勿使用OnPrepareOptions菜单。
$.window.addEventListener('open', function () {
setTimeout(function () {
$.profile.visible = true;
}, 400);
});
"#profile[platform=android]": {
title: "Profile",
icon: "/global/profile.png",
showAsAction: Ti.Android.SHOW_AS_ACTION_ALWAYS,
visible: false
}