メッセージとチェックボックスを持つダイアログを作成しようとしています。私は次のコードを使用していますAlertDialogは、メッセージを使用していない場合にのみ複数選択項目を表示します。
private void displayWarning() {
SharedPreferences prefs;
final String PREFS_NAME = "UserData";
final String PREF_SHOW_WARNING_KEY = "show_warning";
prefs = this.getActivity().getSharedPreferences(PREFS_NAME, 0);
final String[] items = {"do not show again"};
final boolean[] itemsChecked = {false};
boolean displayWarnings = prefs.getBoolean(PREF_SHOW_WARNING_KEY, true);
if (displayWarnings) {
AlertDialog.Builder builder = new AlertDialog.Builder(getContext());
builder.setMessage("this is a warning")
.setCancelable(false)
.setMultiChoiceItems(items, itemsChecked, new OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if (isChecked) {
itemsChecked[which] = false;
} else {
itemsChecked[which] = true;
}
}
})
.setPositiveButton("OK", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
// do things
}
});
AlertDialog alert = builder.create();
alert.show();
}
if (itemsChecked[0]) {
displayWarnings = false;
}
else {
displayWarnings = true;
}
prefs.edit().putBoolean(PREF_SHOW_WARNING_KEY, displayWarnings).commit();
}
このコードを実行すると、チェックボックスとテキストは表示されません。メッセージ(「これは警告です」)を削除すると、チェックボックスが表示されます。また、メッセージをタイトルに変更すると、チェックボックスが表示されますが、元のメッセージは長すぎてタイトルに使用できません。
希望はこれです。要点は、メッセージとチェックボックスの両方をチェックしてダイアログを表示して、ダイアログが再び表示されないようにすることです。
それが動作する別のソリューションを見るのは素晴らしいですが、私も非常に興味を持ってうまくいかないものを私の例では – MWB
[OK]を、私はそれをテストしています、別の回答を投稿しています –