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
执行相同的操作。