如何使用复选框/开关(Android Appcelerator)创建OptionDialog

时间:2017-10-10 12:55:52

标签: android titanium appcelerator

我想在Android上创建一个这样的OptionDialog(每行左边有一个标签,右边有一个Switch):

example optiondialog

但是我使用的代码无效:

var optsView = Ti.UI.createView({
    backgroundColor : '#ffffff',
});

var opts = ["aaa", "bbb", "ccc"];
for (var i = 0; i < opts.length; i++)
{
    var row = Ti.UI.createView({
        backgroundColor: "#ffffff"
    });

    var label = Ti.UI.createLabel({
        left: "8dp",
        color: 'black',
        size: '14sp',
        title: opts[i]
    });

    var check = Ti.UI.createSwitch({
        style : Ti.UI.Android.SWITCH_STYLE_CHECKBOX,
        value : false,
        right: "8dp"
    }); 

    row.add(label);
    row.add(check);

    optsView.add(row);
}

var option = Ti.UI.createOptionDialog({
    title: 'Configuration',
    androidView: optsView
});

option.show();

应用程序将崩溃并在控制台上显示:

[ERROR] :  TiExceptionHandler: (main) [6049,7004] ----- Titanium Javascript Runtime Error -----
[ERROR] :  TiExceptionHandler: (main) [0,7004] - In undefined:124,16
[ERROR] :  TiExceptionHandler: (main) [0,7004] - Message: Uncaught java.lang.String cannot be cast to java.util.HashMap
[ERROR] :  TiExceptionHandler: (main) [0,7004] - Source:         option.show();

我猜我的问题出在for循环上。我试着评论那段代码而我的应用程序不会崩溃,但我不知道出了什么问题。

2 个答案:

答案 0 :(得分:0)

option是保留关键字:https://www.w3schools.com/js/js_reserved.asp所以不要将其用作变量名称

答案 1 :(得分:0)

我的应用程序崩溃了,因为我输入了&#34;尺寸:&#39; 14sp&#39;&#34;而不是&#34; font:{fontSize:&#39; 14sp&#39; }&#34;在Label构造函数上。