从 ScrollableView 中删除页面时,Titanium 应用程序崩溃
Posted
技术标签:
【中文标题】从 ScrollableView 中删除页面时,Titanium 应用程序崩溃【英文标题】:Titanium app crashes when removing pages from ScrollableView 【发布时间】:2015-01-10 13:01:01 【问题描述】:我有一个应用程序使用 ScrollableView
和动态添加的页面。我有一个删除视图的功能。如果我没有更改ScrollableView
中的页面,则页面将被删除。但是,如果我滚动到不同的页面,即不是第一页,则尝试删除应用程序崩溃的页面。在 ios 上没问题,但我在 android 上遇到了问题。
这是从ScrollableView
中删除视图的函数。
function emptyScrollView()
var views = $.bookables_scroll.views;
var count = views.length;
for (var i = 0; i < count; ++i)
$.bookables_scroll.removeView(views[i]);
$.bookables_scroll.views[i] = null;
这是向我的ScrollableView
添加视图的代码
var payload =
bookable : bookable,
rota: b_rota,
current_date: current_date,
;
// adds to scrollable view
$.bookables_scroll.addView(Alloy.createController('appointments_bookable', payload).getView());
当我从第一个视图/页面滚动后删除视图/页面时,为什么应用会崩溃?
钛 v3.4.0 合金 v1.5.1
【问题讨论】:
您在控制台中看到了什么错误消息? 合金+钛版也 @phil 用这些版本更新了我的 Q。我在控制台中没有收到错误。我只是弹出“不幸的是,应用程序名称已停止”。 在logcat中检查错误,会有一些。还有你怎么打电话给emptyScrollView()
,你能显示一些代码吗?
【参考方案1】:
if ($.bookables_scroll && $.bookables_scroll.children != undefined)
// Save childrens
var removeData = [];
for (i = $.bookables_scroll.children.length; i > 0; i--)
removeData.push($.bookables_scroll.children[i - 1]);
;
// Remove childrens
for (i = 0; i < removeData.length; i++)
$.bookables_scroll.remove(removeData[i]);
removeData = null;
尝试将子视图保存到数组中,然后使用另一个循环删除可滚动视图中的所有页面。
希望对你有帮助。
谢谢
【讨论】:
那行不通。$.bookables_scroll.children
显示为空数组【参考方案2】:
在尝试了许多删除方法后,我遇到了同样的问题,我最终删除了该可滚动视图的所有侦听器,删除它,使用 removeAllChildren 删除它的子控制器,清理他的每个子控制器并使用新子创建一个新控制器视图并替换它。是的,这不是最好的方法,但组件总是与我尝试的任何其他事情一起崩溃。
【讨论】:
【参考方案3】:它是 Titanium ScrollableView 中的一个错误,并在 SDK 5.4.0 中修复,正如他们在 Jira 中确认的那样
https://jira.appcelerator.org/browse/TIMOB-20116
【讨论】:
以上是关于从 ScrollableView 中删除页面时,Titanium 应用程序崩溃的主要内容,如果未能解决你的问题,请参考以下文章
EF执行savechanges失败然后直接返回页面的处理办法