在匿名 class 中打破 case

break from case while inside an anonymous class

我正在为一个大学项目使用 firebase 数据库。我认为 is 做什么并不重要。我的问题很清楚。为什么它不让我在 case R.id.first 内的 case 2 中中断。这是一个编译错误,只是说 "break outside switch or loop"。我不知道怎么回事。我将不胜感激 :)

radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {


                switch (checkedId){
                    case R.id.first:
                        mDatabase.child("questions").child("basic").child("comments").child("first").child("answers").child("correct").addValueEventListener(new ValueEventListener() {
                            @Override
                            public void onDataChange(DataSnapshot dataSnapshot) {
                                switch (Integer.parseInt(dataSnapshot.getValue().toString())){
                                    case 1:
                                        break;
                                    case 2:
                                        mDatabase.child("questions").child("basic").child("comments").child("first").child("mistakes").addValueEventListener(new ValueEventListener() {
                                            @Override
                                            public void onDataChange(DataSnapshot dataSnapshot) {

                                                getValue = Integer.parseInt(dataSnapshot.getValue().toString());
                                                getValue++;

                                                mDatabase.child("questions").child("basic").child("comments").child("first").child("mistakes").setValue(getValue);

                                                break;


                                            }

                                            @Override
                                            public void onCancelled(DatabaseError databaseError) {

                                            }


                                        });

                                        break;


                                }
                            }

                            @Override
                            public void onCancelled(DatabaseError databaseError) {

                            }
                        });

                        break;

                    case R.id.second:
                        break;
                    case R.id.third:
                        break;
                }
            }
        });

break 适用于离开 switch 或任何 loop。这 不适用于 突破 函数 。在您的情况下,您正在尝试使用 break 从回调 function onDataChange() 中断。这将始终产生 语法错误 .