gpt4 book ai didi

javascript - Titanium 不加载菜单和 menuItem 可见/不可见

转载 作者:行者123 更新时间:2023-11-30 11:44:54 26 4
gpt4 key购买 nike

菜单有两个问题。菜单由 .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;

错误信息:无法设置未定义的可见属性。

我为我糟糕的英语道歉。

谢谢。

编辑:

例子:

         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 的解决方案

    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 的 Controller 文件中调用此代码(事件仅在窗口打开后可用,因此请使用打开事件):

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();
});

问题2的解决方案:

可能有两个原因:

  • 你的 tss 没有像你在问题中写的那样正确。
  • 您甚至在 $.profile 菜单项打开之前就访问了它。 (参见解决方案 1 中的代码)。因此,在设置属性时,请在窗口打开事件中设置超时。

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
}

关于javascript - Titanium 不加载菜单和 menuItem 可见/不可见,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41319369/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com