Appcelerator:元素未添加到android中的视图中
Posted
技术标签:
【中文标题】Appcelerator:元素未添加到android中的视图中【英文标题】:Appcelerator: Elements are not added to views in android 【发布时间】:2018-01-10 02:23:44 【问题描述】:我一直在开发一个多平台移动应用程序。我几乎完成了它,但我总是在 iOS 上进行测试(由于某些原因)。现在我可以在 Android 上进行测试,发现它在很多方面都失败了。
这里的主要问题是当我使用时:
alloy.createSomeElement(
//params
)
$.someView.add(someElemet);
元素未添加到视图中。正如我所提到的,这只发生在 android 上并且在 ios 上运行良好。
这里我向您展示一个示例,它是两个平台的结果。
e.json.forEach(function(address)
var addressView = Ti.UI.createView(
height : Ti.UI.SIZE,
width : '90%',
layout : 'horizontal',
touchEnabled : true,
Address_id : address.id
);
var icoCont = Ti.UI.createView(
height : 20,
width : '10%'
);
var icon = Ti.UI.createImageView(
height : '20',
width : '20',
image : "/compartidos/persona3.png",
touchEnabled : false
);
var addressText = Ti.UI.createLabel(
height : Ti.UI.SIZE,
width : Ti.UI.FILL,
left : 1,
text : address.street + " - " + address.ext_number,
font :
fontSize : 12,
fontFamily : "Nunito-Bold",
,
touchEnabled : false,
color: "#000"
);
if (address.alias)
addressText.text = address.alias;
var separator = Ti.UI.createView(
height : 5,
width : '100%',
top : 5,
bottom : 5,
backgroundColor : '#8C000000',
touchEnabled : false
);
addressView.add(icoCont, addressText);
icoCont.add(icon);
$.container.add(addressView, separator);
);
iOS 上的结果:result on iOS
这在 Android 上:result on Android
我真的希望你能帮我解决这个问题。
注意:Nueva dirección 和 Dirección actual 不是这样生成的,它们存在于 xml 文件中。
【问题讨论】:
【参考方案1】:经过长时间的尝试和错误后,我解决了我的问题。我只在有人遇到同样问题的情况下发布我的解决方案。
似乎在 Android 中我不能像这样在一条指令中添加多个元素
addressView.add(icoCont, addressText);
我唯一要做的就是像这样将它分成 2 个(每个元素一个)
addressView.add(icoCont);
addressView.add(addressText);
【讨论】:
使用 Alloy 数据绑定可以显着减少编写的代码量。通过使用一个简单的模拟库和主干模型和集合,您可以用控制器中的一行 JS 替换您的代码,并简化 XML 和 TSS。结果将是更少的代码,并且您将利用 Alloy 数据绑定必须提供的所有功能。有一个example here of a simple Todo app 使用小型模拟库将数组转换为集合。 谢谢你,我稍后会改进这个应用程序,现在截止日期很近,我必须尽快完成。【参考方案2】:您可以在单个 add 语句中添加多个视图,但您需要将它们作为数组传递,例如:addressView.add( [icoCont, addressText] );
【讨论】:
我刚刚测试过它会导致应用程序崩溃。这是行不通的。还是谢谢你。 我从 Docs 中读过它,但有时文档可能没有更新。所以最好一个一个添加。以上是关于Appcelerator:元素未添加到android中的视图中的主要内容,如果未能解决你的问题,请参考以下文章
Appcelerator Alloy Android - 无法将窗口/tabGroup 添加到另一个窗口/tabGroup
iOS LocationManager 未更新位置(Titanium Appcelerator 模块)
Appcelerator Titanium 3.x/IOS7 无法将窗口添加为视图的子项
您如何将 Parse Javascript API 与 Appcelerator 集成,而不使用未记录的调用?