Titanium Android: вид не привязан к оконному менеджеру - PullRequest
1 голос
/ 21 марта 2012

У меня есть два представления. В первом представлении у меня есть представление таблицы, и я отображаю удаленные данные в его ячейках.Я показываю индикатор активности при загрузке данных.

Второе представление открывается при выборе любой строки.

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

Нов Android, когда я возвращаюсь к первому просмотру и начинаю скачивать данные, приложение выходит из строя из-за индикатора активности !!!Приложение аварийно завершает работу только в Android, работает нормально в iPhone !!

Я обновляю данные таблицы в focus событии текущего окна.

ошибка: -

Активность org.appcelerator.titanium.TiActivity утекла в окно com.android.internal.policy.impl.PhoneWindow$DecorView@450c4488, которое изначально было добавлено здесь E / WindowManager (324): android.view.WindowLeaked: Activity org.appcelerator.titanium.TiActivity утекло окно com.android.internal.policy.impl.PhoneWindow$DecorView@450c4488, которое было первоначально добавлено здесь

и

(main) [2225,140482] Событие отправки: исключение в потоке: main msg: java.lang.IllegalArgumentException: представление не присоединено к оконному менеджеру;Titanium 1.8.1,2012 / 01/27 17: 31, a24502a E / TiApplication (324): java.lang.IllegalArgumentException: представление не присоединено к оконному менеджеру

EDITED

мой код: -

var currentWindow = Titanium.UI.currentWindow;

var placeTableData = [] ;
var placeTableView = Titanium.UI.createTableView
({
    data:placeTableData,
    top:'0dp',
    height:'365dp'
});

currentWindow.addEventListener('focus',winopened);
function winopened(e)
{
    placeTableData = createRow();
}

function createRow() 
{   
    currentWindow.add(activity);
    activity.show();    
    currentWindow.touchEnabled = false;

    // downloading data 

    if(loader1.DONE)
    {
        currentWindow.touchEnabled = true ;
        activity.hide();
    }
}

1 Ответ

1 голос
/ 22 марта 2012

Решено !!!Я обнаружил, что в Android, когда вы нажимаете кнопку «назад», он не обрабатывает правильную навигацию к предыдущему представлению.Он просто отображает предыдущий вид, не заботясь о текущем виде.

Поэтому необходимо правильно закрыть текущий вид перед отображением другого вида.Поэтому я закрыл текущий вид перед отображением предыдущего.

Когда мы нажимаем кнопку возврата на Android, android:back событие Window получает вызов.Поэтому я закрыл текущее окно в этом методе, например:

Titanium.UI.currentWindow.addEventListener('android:back',function(e)
{
    Ti.API.info('back button pressed');
    currentWindow.close();
});
...