2016-11-04 7 views
0

У меня есть 2 открытых окна, главный; и окно загрузки «всплывающих окон», которое должно отображаться только на несколько мгновений.Titanium & Alloy - временное окно закрывает все приложение, когда погибло

Когда я пытаюсь

loading.close(); 

экран загрузки, все окна получить немедленно закрыты. Нет кода ошибки или чего-то еще, приложение сразу же закрывается, поскольку на экране больше нет окон/окон. Но я никогда не закрывал основной «индексный» вид, поэтому я не понимаю, почему он исчезает. Моя основная идея состояла в том, чтобы использовать

loading.hide(); 

для того, чтобы скрыть экран загрузки и позволить остальным продолжать, но когда шкура выполняет, приложение не срабатывает или реагировать на любое событие, пока вручную не принуждал близко.


Литт больше кода:

index.js

var loading = Alloy.createController("loading").getView(); 

function updateMainMenu() { 
    if (Ti.App.dataReady){ 

     //Actually create the main menù, only if data is available. 
     //Cut out of snippet due to sheer length. 
     //When menù is complete, close the loading window. 

     loading.close(); //##### THIS CLOSES ENTIRE APP ##### 
    }    
} 

//##### IF LOADING IS HIDDEN INSTEAD, EVENTS NEVER TRIGGER ##### 
//When a list element is clicked open the corresponding page. 
function onListClick(e) { 
    var win = Alloy.createController('controlPage', e.row.data).getView(); 
    win.open(); 
} 

//Loads the View, displays it and keeps it updated. 
$.index.open(); 
loading.open(); 
setInterval(updateMainMenu, 2000); 

loading.js/TSS/XML не имеет соответствующего кода для этой проблемы или, по крайней мере, я так думаю. Он имеет только окно и изображение с изображением, меняющимся каждые полсекунды, и он отлично работает до закрытия.

Примечание:

  • Глобальная переменная Ti.App.dataReady происходит от фоновой задачи (другого файла, работает корректно);
  • Event onListClick правильно и работает (если я не открываю загрузку в первую очередь)
+1

вы пытаетесь создать индикатор загрузки накладку? В этом случае, возможно, стоит посмотреть https://github.com/FokkeZB/nl.fokkezb.loading (и, возможно, изменить его для вашего случая использования (который отображает изображения каждые полсекунды) – davidcyp

+0

Спасибо, конечный результат это то, что я ищу. Тем не менее, это не ответ. ^^ Я хотел бы знать, почему закрытие окна закрывает приложение (или замораживает его). На данный момент я буду использовать виджет. Еще раз спасибо! – Crystallize

ответ

1

Прежде всего, постарайтесь не использовать index.open, поскольку это относится к «файлу», а не к фактическому окну. Обязательно используйте идентификатор в файле tss для окна и используйте этот .open(), хотели бы, чтобы ваш полный контроллер индекса дал более точный ответ.

Затем вы одновременно открываете два окна. Попытка открыть два окна подряд, как это, вероятно, даст вам состояние гонки. Как уже упоминалось, убедитесь, что ваше первое окно открыто, прежде чем открывать любое оверлейное окно.

Хороший совет, поскольку вы делаете кросс-платформенные приложения здесь, чтобы все было уверенно (окна разные для всех платформ, iOS, Android и Windows). Для Android первое окно имеет решающее значение и станет корневым окном. Если, во всяком случае, первое окно оверлея закончено (и да, некоторые вещи асинхронны), тогда ваш оверлей является корневым, закрывая его. Закройте приложение в соответствии с документами Android.

Так что всегда проверяйте, чтобы ваше первое окно было «сделано», прежде чем открывать что-либо еще. прослушивать открытое событие и затем открывать оверлей.

Теперь, если вы хотите, чтобы он выглядел хорошо, вы можете указать главное окно с двумя представлениями вместо этого в файле XML. начните с «скрыть» в окне списка и «показать» на вашем оверлее.Таким образом, вы можете перемещаться в любое удобное для вас время. Затем вы можете повторно использовать оверлейное окно «прогресс», если хотите.

В моих приложениях я использую представление в виджетах, поэтому мне не нужно использовать show/hide, таким образом я могу его повторно использовать. Я предполагаю, что это аромат вопрос (если мы не начнем говорить след памяти)

Надеется, что это имеет смысл для вас ...

+0

Да , я понимаю. Окно загрузки более легкое, чем главная «индексная» страница, а так как загрузка выполняется асинхронно, загрузка сначала загружается и получает root. Закрытие корня закрывает все приложение, и именно поэтому .close давая мне проблемы. Спасибо. ^^ Я нашел другое решение в комментарии к моему вопросу (и пока я использую это), но все же вы принесли мне объяснение. Это, безусловно, окажется полезным. – Crystallize

0

Одна вещь, вы можете попробовать это слушать «открытое» событие огонь на главном окне, прежде чем связано вы открываете второе окно. У меня было странное поведение, подобное этому, когда я не жду, пока откроется окно.

 Смежные вопросы

  • Нет связанных вопросов^_^