Android 检查表don';Don’不要久留

Android 检查表don';Don’不要久留,android,checkbox,Android,Checkbox,我的检查表有问题。当用户检查其中一个项目并进行验证时,不会存储已检查的项目。每次打开新对话框时,检查表都会重置 我如何储存它们 这是我的密码: else if(position == 1){ final ArrayList<Integer> mSelectedItems = new ArrayList<Integer>(); AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); buil

我的检查表有问题。当用户检查其中一个项目并进行验证时,不会存储已检查的项目。每次打开新对话框时,检查表都会重置

我如何储存它们

这是我的密码:

else if(position == 1){
final ArrayList<Integer> mSelectedItems = new ArrayList<Integer>();
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
builder.setTitle("Titre")
       .setMultiChoiceItems(R.array.liste_choix, null,
               new DialogInterface.OnMultiChoiceClickListener() {
               @Override
               public void onClick(DialogInterface dialog, int which,
                       boolean isChecked) {
                   if (isChecked) {
                       mSelectedItems.add(which);
                   } else if (mSelectedItems.contains(which)) {
                       mSelectedItems.remove(Integer.valueOf(which));
                   }
               }
       })
       .setPositiveButton(R.string.ok, new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int id) {
                   // User clicked OK, so save the mSelectedItems results somewhere
                   // or return them to the component that opened the dialog
               }
           })
       .setNegativeButton(R.string.annuler, new DialogInterface.OnClickListener() {
           @Override
           public void onClick(DialogInterface dialog, int id) {
               }
           });

builder.show();
else if(位置==1){
最终ArrayList mSelectedItems=新ArrayList();
AlertDialog.Builder=新建AlertDialog.Builder(getActivity());
建造商名称(“标题”)
.setMultiChoiceItems(R.array.liste_choix,null,
新的DialogInterface.OnMultiChoiceClickListener(){
@凌驾
public void onClick(DialogInterface dialog,int,
布尔值(已检查){
如果(已检查){
mSelectedItems.add(哪个);
}else if(mSelectedItems.contains(which)){
mSelectedItems.remove(Integer.valueOf(which));
}
}
})
.setPositiveButton(R.string.ok,新建DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
//用户单击“确定”,因此将mSelectedItems结果保存到某个位置
//或者将它们返回到打开对话框的组件
}
})
.setNegativeButton(R.string.annuer,新的DialogInterface.OnClickListener(){
@凌驾
public void onClick(DialogInterface对话框,int-id){
}
});
builder.show();

}我认为这与mSelectedItems有关。因为上面的所有事情都是在一个条件之后发生的,所以看起来好像这一切都是在一个方法中发生的。当您每次访问条件的这一部分时创建一个新的mSelectedItems实例时,每次启动时列表都将为空。我建议你做的是:

(1) 实际上,如果这是您的意图,请将mSelectedItems设置为成员或实例变量,这样就不会在每次访问代码的该部分时都重新创建


(2) 然后,您所要做的就是检查上次在切换框时选择的框,就像在中一样

谢谢你的回答。你说得对,但这不是我想要的。当有人存在我的应用程序时,我希望复选框保持选中状态。因此,当他再次回来时,它们仍然会被检查。因此,您需要将选择存储在某个地方-您是否考虑过使用
SharedReferences
SQLite
、外部Web服务器或其他持久存储方法<代码>共享引用可能是最容易使用的。如果您只是将数据存储在那里,然后在下次此人回来时重新加载数据,则可以采用这种方式存储数据。您也可以使用
SavedInstanceState
执行相同的操作。