【问题标题】:Titanium Mobile: App crashes after loading first windowTitanium Mobile:加载第一个窗口后应用程序崩溃
【发布时间】:2011-08-23 13:12:59
【问题描述】:

我开始了一个新的钛移动项目(第一次!)。我有一个带有选项卡组的文件 main.js 和链接到两个窗口的 2 个选项卡。我的第一个标签似乎加载得很好,但之后的一切似乎都崩溃了。我无法单击列表项或触发按钮单击事件。我的第二个标签不起作用。但这并非总是如此。一半时间还好,另一半就崩溃了。这是我的代码:

app.js:

Titanium.UI.setBackgroundColor('#fff');

var main = Ti.UI.createWindow({
    url:'main_windows/main.js',
    height:Ti.Platform.displayCaps.platformHeight,
    width:Ti.Platform.displayCaps.platformWidth,
    fullscreen: true,
    navBarHidden: false
});

main.open();

main.js:

var win = Ti.UI.currentWindow;

var appointments = Titanium.UI.createWindow({});
appointments.url = 'appointments.js';

var quotes = Titanium.UI.createWindow({});
quotes.url = 'quotes.js';

var tabAppointments = Titanium.UI.createTab({  
    icon:'../KS_nav_views.png',
    title:'Appointments',
    window:appointments
});

var tabQuotes = Titanium.UI.createTab({  
    icon:'../KS_nav_views.png',
    title:'Quotes',
    window:quotes
});

// create tab group
var tabGroup = Titanium.UI.createTabGroup();
//
//  add tabs 
//
tabGroup.addTab(tabAppointments);  
tabGroup.addTab(tabQuotes);  

// open tab group
tabGroup.open();

当我启动我的应用程序时,会加载约会窗口。但是,当我单击引号选项卡或列表项之一时,没有任何反应。

这是我的约会.js 文件:

var win = Ti.UI.currentWindow;
win.backgroundColor = '#fff';   
win.title = 'Appointments';

var data = [
    {title:'Billy Jones', hasChild:true},
    {title:'Adrian Hart', hasChild:true},
    {title:'Sid Vel', hasChild:true},
    {title:'Andrew Coats', hasChild:true}
];

// create table view
var tableview = Titanium.UI.createTableView({
    data:data
});

win.add(tableview);

我的 quotes.js 文件与上面的相同,但窗口标题不同。

就像我说的那样,有时一切似乎都可以正常工作,然后我重新构建代码,但它又不能正常工作了。

非常感谢任何帮助!

比利

【问题讨论】:

  • 你的quotes.js 是什么样的?
  • 除了窗口标题不同之外,它与约会.js 完全相同。当我将所有代码放入 app.js 而不是将其拆分为不同的窗口 js 文件时,它就可以工作了。这与我拆分 .js 文件的方式有关

标签: javascript titanium titanium-mobile


【解决方案1】:

把 main.js 改成怎么样

var appointments = Titanium.UI.createWindow({
  url: 'appointments.js'
});

var quotes = Titanium.UI.createWindow({
  url: 'quotes.js'
});

这有帮助吗?

【讨论】:

    【解决方案2】:

    您的列表视图中没有单击事件处理程序,因此当您单击列表时什么都没有发生。

    tableview.addEventListener('click',function(e) {
           alert("clicked row"); 
    });
    

    所有文件在哪里?我注意到您在一个名为 main_windows 的目录中有一些?确保在通过 URL 创建窗口时正确设置了路径。您可以通过将所有文件移动到同一目录来检查是否是 URL 路径问题,然后查看它是否有效

    【讨论】:

    • 没关系,因为一切都冻结了。即使我在上面放置一个事件处理程序,它也不会执行。我已经有一个按钮,有时它可以工作,有时它不会
    【解决方案3】:

    先试试这个……

    var tabAppointments = Titanium.UI.createTab({  
        icon:'/KS_nav_views.png',
        title:'Appointments',
        window:appointments
    });
    
    var tabQuotes = Titanium.UI.createTab({  
        icon:'/KS_nav_views.png',
        title:'Quotes',
        window:quotes
    });
    

    将您的图标路径替换为类似的内容并编译和检查,您无需提供路径... / 将从您的应用程序的根目录中获取...

    1. 根据您的说法,代码有时有效,有时无效。删除 build 文件夹中 Android 文件夹的内容,然后尝试编译,这是因为一些缓存问题,顺便说一句,您使用的是哪个版本的钛。

    2. 从 main.js 文件中删除 var win = Ti.UI.currentWindow;...

    如果他们中的任何人工作,请告诉我,这可能是他们之间的任何问题,如果您的问题仍然存在......请在此处发表评论。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-07-28
      • 1970-01-01
      • 1970-01-01
      • 2012-10-15
      • 2021-06-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多