簡體   English   中英

ID屬性在具有Titanium的android設備上返回null

[英]ID attribute returns null on android device with Titanium

我在SO和其他設備上進行搜索以徒勞地找到解決方案。 我用一個ID table創建了一個XML的TableView ,並動態地填充了它(通過在其中創建幾個TableViewRowsTextFields )。

問題如下:當我嘗試通過$.table.add(row)以編程方式添加所有創建的項目時, 我在瀏覽器上具有預期的結果,但在Android設備上卻出現了NullPointerException

我在代碼中進行了一些測試,以查看返回null並發現ID屬性$.table是問題所在。 Android中會發生什么以及如何解決?

mytable.xml:

<Alloy>
    <Window id="win_container">
        <View id="wrapper">
            <!-- The TableView -->
            <TableView id="table" />
        </View>
    </Window>
</Alloy>

mytable.js:

for (...) {
    // create TableViewRows
    row = Ti.UI.createTableViewRow ({
        className: "row",
        ...
    });

    // create several TextFields in one TableViewRow
    for (...) {
        tf = Ti.UI.createTextField ({
            ...
        });
        // add TextFields to the TableViewRow
        row.add(tf);
    }

    // add TableViewRows to table
    $.table.add(row);    ///  <----- '$.table' returns 'null'
}

任何幫助將不勝感激。

IMO錯誤是由於要使用add方法在表中添加行而引起的。

要向tableView添加一行,可以使用以下兩種方法:

  1. 使用tableView appendRow方法:替換$.table.add(row); $.table.appendRow(row);

  2. 推送數組中的所有行,然后使用setData方法將其添加到tableView 您的代碼將類似於:

     var dataRows = []; for (...) { // create TableViewRows row = Ti.UI.createTableViewRow ({ className: "row", ... }); // create several TextFields in one TableViewRow for (...) { tf = Ti.UI.createTextField ({ ... }); // add TextFields to the TableViewRow row.add(tf); } dataRows.push(row); } // add TableViewRows to table $.table.setData(dataRows); 

希望能幫助到你。

這可能是一個“黑暗中的鏡頭”-但我遇到一個名為“私人”的ID問題。 我必須將自己的ID重命名為“ isPrivate”,因此我想其中有些不能為“保留名稱”。 我還沒有檢查過-只是通過反復試驗發現了。 但是也許“表”是一個相似的保留字?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM