DaJ*_*kal 5 java android android-alertdialog
有没有办法在下一个Alert.Builder中获取有关已检查项目的信息?当有人点击肯定按钮时,我需要在SharedPreferences中保存一些布尔值.这些布尔值来自用户在警报中所做的选择.我怎么能得到它们?
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final SharedPreferences preferences = getSharedPreferences("type_settings", MODE_PRIVATE);
boolean[] selectedTypes = getSelectedTypes(preferences);
builder.setIcon(R.drawable.menu_type)
.setTitle(R.string.list_dialog_title)
.setMultiChoiceItems(R.array.select_type_items, selectedTypes,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) {
}
})
.setPositiveButton(R.string.types_save, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
SharedPreferences.Editor prefEditor = preferences.edit();
}
})
.setNegativeButton(R.string.types_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
})
.create();
builder.show();
Run Code Online (Sandbox Code Playgroud)
您可以使用getCheckedItemIds()或getCheckedItemPositions ()从列表视图中获取已检查项目的列表.您应该首先使用AlertDialog.getListView()对话框的列表视图.
mAlert.getListView().getCheckedItemPositions ();
Run Code Online (Sandbox Code Playgroud)
我设法以某种方式解决了这个问题,但我不知道这是否是一个好的做法。这是代码:
AlertDialog.Builder builder = new AlertDialog.Builder(this);
final SharedPreferences preferences = getSharedPreferences("type_settings", MODE_PRIVATE);
final String[] availableTypes = getResources().getStringArray(R.array.select_type_items);
final boolean[] selectedTypes = getSelectedTypes(preferences, availableTypes);
builder.setIcon(R.drawable.menu_type)
.setTitle(R.string.list_dialog_title)
.setMultiChoiceItems(R.array.select_type_items, selectedTypes,
new DialogInterface.OnMultiChoiceClickListener() {
public void onClick(DialogInterface dialog, int whichButton, boolean isChecked) {
selectedTypes[whichButton] = isChecked;
}
})
.setPositiveButton(R.string.types_save, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
SharedPreferences.Editor prefEditor = preferences.edit();
saveSelectedTypes(prefEditor, availableTypes, selectedTypes);
}
})
.setNegativeButton(R.string.types_cancel, new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
dialog.cancel();
}
})
.create();
builder.show();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7384 次 |
| 最近记录: |