I'm a new app developer who's developing an Android application on Titanium. I'm trying to implement an RSS feed in one of my windows, but I keep getting the following error messages when I run the app on my device:
[ERROR] : TiExceptionHandler: (main) [107,107] ----- Titanium Javascript Runtime Error ----- [ERROR] : TiExceptionHandler: (main) [0,107] - In ui/common/NewsWindow.js:1,69 [ERROR] : TiExceptionHandler: (main) [0,107] - Message: Uncaught TypeError: Cannot call method 'add' of null [ERROR] : TiExceptionHandler: (main) [0,107] - Source: fontSize:14},message:"Loading...",style:style,top:20,left:100});win.add(activi [ERROR] : V8Exception: Exception occurred at ui/common/NewsWindow.js:1: Uncaught TypeError: Cannot call method 'add' of null
The code for my NewsWindow.js file is below. I was wondering if someone could possibly help me to get rid of these error messages. Thanks in advance!
var win = Titanium.UI.currentWindow; var style; if (Ti.Platform.name === 'iPhone OS'){ style = Ti.UI.iPhone.ActivityIndicatorStyle.DARK; } else { style = Ti.UI.ActivityIndicatorStyle.DARK; } var activityIndicator = Ti.UI.createActivityIndicator({ color: 'black', font: {fontFamily:'Helvetica Neue', fontSize:14}, message: 'Loading...', style: style, top: 20, left: 100 }); win.add(activityIndicator); activityIndicator.show(); var xmlFeed = 'http://feeds.bbci.co.uk/news/video_and_audio/news_front_page/rss.xml?edition=uk#'; var xhr = Ti.Network.createHTTPClient(); xhr.onload = function() { activityIndicator.hide(); var xml = this.responseXML; Ti.API.info(this.responseText); var channelTitle = xml.documentElement.getElementsByTagName("title").item(0).textContent; var channelLabel = Ti.UI.createLabel({ top: 20, text: channelTitle, color: '#39f' }); win.add(channelLabel); var data = []; var itemsTable = Ti.UI.createTableView({ top: 70, left: 0 }); win.add(itemsTable); var items = xml.documentElement.getElementsByTagName("item"); for(var i = 0; i < items.length; i++) { // create a table row for each item var row = Ti.UI.createTableViewRow({ title: items.item(i).getElementsByTagName("title").item(0).textContent, link: items.item(i).getElementsByTagName("link").item(0).textContent, height: 'auto', hasChild: true }); data.push(row); } // bind the data to the itemsTable itemsTable.data = data; // when the user clicks on a row itemsTable.addEventListener('click', function(e) { // create and open a new window var webView = Titanium.UI.createWebView({ backgroundColor:'#fff', url: e.rowData.link }); var newWindow = Titanium.UI.createWindow({ backgroundColor:'#fff', backButtonTitle: 'Back', title: e.source.title, }); newWindow.add(webView); Ti.UI.currentTab.open(newWindow); }); }; xhr.onerror = function() { activityIndicator.hide(); alert(this.status + ': ' + this.statusText); return false; }; // open the remote feed xhr.open('GET', xmlFeed); // execute the call to the remote feed xhr.send();