Android 类型AlertDialog.Builder中的方法setMultiChoiceItems(int,boolean[],DialogInterface.OnMultiChoiceClickListener)不适用

Android 类型AlertDialog.Builder中的方法setMultiChoiceItems(int,boolean[],DialogInterface.OnMultiChoiceClickListener)不适用,android,Android,我试图在onNewIntent方法中为任何整数ArrayList(例如[1,9,13])构建一个动态对话框窗口,但我遇到了这个line builder.setMultiChoiceItems错误 方法setMultiChoiceItemsint,boolean[], 类型中的DialogInterface.OnMultiChoiceClickListener AlertDialog.Builder不适用于参数 ArrayList,空,新 DialogInterface.OnMultiChoice

我试图在onNewIntent方法中为任何整数ArrayList(例如[1,9,13])构建一个动态对话框窗口,但我遇到了这个line builder.setMultiChoiceItems错误

方法setMultiChoiceItemsint,boolean[], 类型中的DialogInterface.OnMultiChoiceClickListener AlertDialog.Builder不适用于参数 ArrayList,空,新 DialogInterface.OnMultiChoiceClickListener{}

谢谢你的帮助

ONNEWINENT方法:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);

    setIntent(intent);

    Bundle extras = getIntent().getExtras();
    if (extras != null) {

        ArrayList<Integer> routeList = extras
                .getIntegerArrayList("stop_route");
        AlertDialog.Builder builder = new AlertDialog.Builder(this);

        builder.setTitle("Select");

        builder.setMultiChoiceItems(routeList, null, new DialogInterface.OnMultiChoiceClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {


            }
        });
        builder.setPositiveButton(android.R.string.ok,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {

                    }
                });
        builder.setNegativeButton(android.R.string.cancel,
                new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int id) {

                    }
                });


        builder.create();
        builder.show();

    }

}
你可以用

public AlertDialog.Builder setMultiChoiceItems (CharSequence[] items, boolean[] checkedItems, DialogInterface.OnMultiChoiceClickListener listener)
只需将ArrayList转换为CharSequence[]

转换:

ArrayList<Integer> routeList = extras.getIntegerArrayList("stop_route");
CharSequence charSequence [] = new CharSequence[routeList.size()];
for(int i = 0, size = routeList.size(); i < size; i++){
    charSequence[i] = String.valueOf(routeList.get(i));
}

builder.setMultiChoiceItems(charSequence, null, new Dia ..........

setMultiChoiceItems需要int作为第一个参数,而不是第一个参数ArrayList不匹配的列表。没有将ArrayList作为输入的setMultiChoiceItems函数。也许您指的是字符串数组的资源id?这必须在xml文件中@塞巴斯蒂安:这是否意味着我需要循环我的ArrayList?如果是,在哪里?@IdleGandalf:在onNewIntent中,我得到了一个要显示在对话框窗口中的arrayList。为什么我需要xml文件?@此时您不必使用xml文件,但需要将Arraylist转换为CharSequence数组,以匹配此方法定义:setMultiChoiceItems CharSequence[]items,boolean[]checkedItems,DialogInterface.OnMultiChoiceClickListener Listener我已将其转换为如下字符序列`builder.setMultiChoiceItemsCharSequence[]cs,null,新DialogInterface.OnMultiChoiceClickListener`但我在令牌上收到此错误语法错误,放置错误的构造函数。应用程序崩溃,我得到java.lang.ArrayStoreException:java.lang.Integer类型的源[0]无法存储在java.lang.CharSequence[]类型的目标数组中