如何将字符串数组传递给AlertDialog builder.setItems()

时间:2014-05-29 13:12:16

标签: java android arrays android-alertdialog

我正在使用“警报对话框”构建器来可视化配对的蓝牙设备。我想将sstring数组传递给setItems()方法,以便使用设备创建列表。 setItems()获得CharSequence[]和听众。当我传递字符串数组时,它失败了。我该如何解决?这是代码:

public void showPairedDevices() {
    String[] pairedDevicesArray = new String[100];

    // Get a set of currently paired devices
    Set<BluetoothDevice> pairedDevicesSet = bluetoothAdapter
            .getBondedDevices();

    if (pairedDevicesSet.size() > 0) {
        int i = 0;
        for (BluetoothDevice device : pairedDevicesSet) {
            pairedDevicesArray[i] = device.getName();
            i++;
        }

        connectDialog = new AlertDialog.Builder(context);
        connectDialog.setTitle("Paired devices");
        connectDialog.setItems(pairedDevicesArray, connectDialogClickListener);
        connectDialog.show();

    } else {
        Toast.makeText(context, "No paired devices!", Toast.LENGTH_SHORT)
                .show();
    }
}

private OnClickListener connectDialogClickListener = new OnClickListener() {
    @Override
    public void onClick(DialogInterface connectDialog, int button) {
        connectDialog.dismiss();
    }
};

1 个答案:

答案 0 :(得分:1)

您的问题源于您从一个太大的String数组开始的事实。初始化对象数组时,默认情况下每个空格都为null。考虑到这一点,您应该知道的是,当您将长度为100的数组提供给setItem()时,它将检查每个索引,如果它找到{{ 1}}它会抛出一个错误。这是一个建议的解决方案:

null