Titanium Android:视图未附加到窗口管理器崩溃

时间:2012-03-21 10:04:39

标签: android titanium appcelerator titanium-mobile

我有两个视图。在第一个视图中,我有一个表视图,我在其单元格中显示远程数据。我在数据下载时显示活动指示器。

当选择任何行时,第二个视图会打开。

当我回到第一个视图时,我通过下载远程数据来刷新表格视图。

但是在Android中,当我回到第一个视图并开始下载数据时,应用程序因活动指示器而崩溃!应用程序仅在Android中崩溃,它在iPhone中运行良好!!

我正在刷新当前窗口的焦点事件中的表格数据。

错误: -

  

活动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 个答案:

答案 0 :(得分:1)

解决了!!!我发现,在Android中,当您按下后退按钮时,它无法正确导航到上一个视图。它只显示上一个视图而不关注当前视图。

因此有必要在显示另一个视图之前正确关闭当前视图。所以我在显示上一个视图之前关闭了当前视图。

当我们按下Android上的后退按钮时,android:back Window事件会被呼叫。所以我在这个方法中关闭了当前窗口,如:

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