2

私はcheckBoxでダイアログを持っています。このチェックボックスを選択する前に、これらのチェックボックスを確実に選択するようユーザーにお願いします。(つまり、checkBox を選択しようとして、この AlertDialog が表示される前に、確信があるかどうかを尋ねます)

コードでは次のようになります。

CheckBox cb = (CheckBox) v.findViewById(R.id.favouriteChkBox);

            if (cb.isChecked()) {
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        context);
                builder.setTitle("Do you want to add this to favourite?");

                builder.setPositiveButton("yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                itemChecked.set(position, true);
                            }
                        });
                builder.setNegativeButton("no",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                dialog.cancel();
                            }
                        });
                builder.create().show();

            }

しかし、これはうまくいきません。「はい」または「いいえ」をクリックすると、AlertDialogが表示され、チェックボックスが選択されます。

これが機能しない理由を教えてください。ありがとう!

4

2 に答える 2

2
    final CheckBox cb = (CheckBox) findViewById(R.id.favouriteChkBox);

    cb.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if (cb.isChecked()) {
                AlertDialog.Builder builder = new AlertDialog.Builder(
                        TestGitActivity.this);
                builder.setTitle("Do you want to add this to favourite?");

                builder.setPositiveButton("yes",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                cb.setChecked(true);
                            }
                        });
                builder.setNegativeButton("no",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int id) {
                                cb.setChecked(false);
                            }
                        });
                builder.create().show();

            }

        }
    });
于 2013-03-10T04:23:09.017 に答える
0

これは、ユーザーがNOを選択した場合、 の状態がCheckBoxで変更されていないという事実に関係していると思わOnClickListenerNegativeButtonます。このコードを試してください:

CheckBox cb = (CheckBox) v.findViewById(R.id.favouriteChkBox);
if (cb.isChecked()) {
    AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("Do you want to add this to favourite?");

    builder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            itemChecked.set(position, true);
            // ADD THIS TO YOUR CODE
            cb.setChecked(true);
        }
    });

    builder.setNegativeButton("no", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int id) {
            // ADD THIS TO YOUR CODE
            .setChecked(false);
            dialog.dismiss(); // CHANGE THE .cancel() TO dismiss()
        }
    });

    builder.create().show();
}
于 2013-03-10T04:20:22.247 に答える