1

ユーザーにオブジェクトを分類させるために、2 つのラジオ ボタンを持つダイアログを使用しています。これは、ユーザーがラジオ ボタンの 1 つを明示的にクリックした場合には機能しますが、すぐに [OK] を押した場合には機能しません。どうすればこの状況に対処できますか?

case DIALOG_OBJECT_CLASSIFICATION:
        return new AlertDialog.Builder(DrawNewPlans.this)
                .setIcon(R.drawable.alert_dialog_icon)
                .setTitle("What Object are you drawing?")
                .setSingleChoiceItems(R.array.types_of_object, 0,
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int whichButton) {
                                makeToast("WhichButton = "+whichButton);
                                switch (whichButton) {
                                    case 0:
                                        makeToast("User Picked Room");
                                        isRoom = true;
                                        isFurniture = false;
                                        return;
                                    case 1:
                                        makeToast("User Picked Furniture");
                                        isRoom = false;
                                        isFurniture=true;
                                        return;
                                }
                                /* User clicked on a radio button do some stuff */
                            }
                        })
                .setPositiveButton("Ok",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int whichButton) {
                                makeToast("classOfRoom is "+classOfRoom);
                                makeToast("isRoom = "+isRoom);
                                makeToast("isFurniture = "+isFurniture);
                                if (isRoom == true && isFurniture == false) {
                                    classOfRoom="Room";
                                } else if (isRoom == false && isFurniture == true) {
                                    classOfRoom="Furniture";
                                }
                                /* User clicked Yes so do some stuff */
                                isClassified=true;
                                methodWhichStartsDialogs();
                            }
                        })
                .setNegativeButton("Cancel",
                        new DialogInterface.OnClickListener() {
                            public void onClick(DialogInterface dialog,
                                    int whichButton) {

                                /* User clicked No so do some stuff */
                            }
                        }).create(); 
    }

デバッグ用にトーストを追加しました。どうもありがとう。

4

1 に答える 1

1

1つのラジオボタンをデフォルトでtrueに設定できます。つまり、ユーザーが何も選択しなくても、そのオプションがデフォルトで選択されます。

または、それ以外の場合は、ユーザーが[OK]を押したときに少なくとも1つのラジオボタンが選択されているかどうかを確認できます。何も選択されていない場合は、ダイアログを閉じないでください。

于 2013-01-26T17:25:43.213 に答える