Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在AlertDialog中引用多个复选框_Java_Android_Android Alertdialog_Android Preferences_Android Checkbox - Fatal编程技术网

Java 在AlertDialog中引用多个复选框

Java 在AlertDialog中引用多个复选框,java,android,android-alertdialog,android-preferences,android-checkbox,Java,Android,Android Alertdialog,Android Preferences,Android Checkbox,嘿,Android开发者们,我对下面的代码有一个问题。我无法找到一种方法来轻松引用单击的复选框,目前下面的代码只是一个首选项,单击时,会显示一个带有多个复选框的AlertDialog 当复选框被选中时,目标是做一些特定的事情,但是我想对每个项目做一些可能不同的事情 代码 首选项checkboxalert=(首选项)FindReference(“checkboxalert”); checkboxalert .setOnPreferenceClickListener(新的OnPreferenceCl

嘿,Android开发者们,我对下面的代码有一个问题。我无法找到一种方法来轻松引用单击的复选框,目前下面的代码只是一个首选项,单击时,会显示一个带有多个复选框的AlertDialog

当复选框被选中时,目标是做一些特定的事情,但是我想对每个项目做一些可能不同的事情

代码
首选项checkboxalert=(首选项)FindReference(“checkboxalert”);
checkboxalert
.setOnPreferenceClickListener(新的OnPreferenceClickListener(){
final CharSequence[]items={“容易”、“中等”、“难”、“非常难”};
final ArrayList selectedItems=new ArrayList();
公共布尔值打开首选项单击(首选项){
AlertDialog.Builder=新建AlertDialog.Builder(上下文);
builder.setTitle(“选择难度级别”);
builder.setMultiChoiceItems(项,空,
新的DialogInterface.OnMultiChoiceClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int indexSelected,
布尔值(已检查){
如果(已检查){
//我要引用已单击的复选框的位置
selectedItems.add(indexSelected);
i(“首选项-复选框”,“单击了某个内容”);
}如果(selectedItems.contains(indexSelected)){
选择editems.remove(Integer.valueOf(indexSelected));
}
}
})
.setPositiveButton(“确定”,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
}
})
.setNegativeButton(“取消”,新建DialogInterface.OnClickListener()){
@凌驾
public void onClick(DialogInterface对话框,int-id){
}
});
dialog=builder.create();
dialog.show();
返回true;
}
});

使用
索引有什么问题

@Override
public void onClick(DialogInterface dialog, int indexSelected,boolean isChecked) 
{
    if (isChecked) { 
     selectedItems.add(indexSelected);

    //WHERE I WANT TO REFERENCE WHICH CHECKBOX IS CLICKED
    switch (indexSelected)
    {
         case 0:
            // do something if the first box is checked
            break;
         case 1:
            // do something if the second box is checked
            break;
         ...
    }
}

除非我错过了你想要的东西,否则这似乎应该会起作用。

这非常有效,因为某些原因,我不想这样做。我猜我最初的方法是通过标题而不是索引引用复选框。但这更好!。是的,以这样的方式引用,例如
索引
资源id
,这取决于您使用的是什么,通常更好、更安全。如果你决定改变,把“难”改为“难”,那么你就不必改变引用它的方式。
@Override
public void onClick(DialogInterface dialog, int indexSelected,boolean isChecked) 
{
    if (isChecked) { 
     selectedItems.add(indexSelected);

    //WHERE I WANT TO REFERENCE WHICH CHECKBOX IS CLICKED
    switch (indexSelected)
    {
         case 0:
            // do something if the first box is checked
            break;
         case 1:
            // do something if the second box is checked
            break;
         ...
    }
}