Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如果单击不同的单选按钮,则仅保存最后一个单选按钮的值_Java_Android_Radio Button_Radio Group - Fatal编程技术网

Java 如果单击不同的单选按钮,则仅保存最后一个单选按钮的值

Java 如果单击不同的单选按钮,则仅保存最后一个单选按钮的值,java,android,radio-button,radio-group,Java,Android,Radio Button,Radio Group,他的是我创建的测验应用程序的第2部分。第一部分很好,但是在这一部分,当我点击一个单选按钮时,分数就会叠加起来。例如,如果我单击单选按钮2,然后单击单选按钮3,分数将变为3而不是2 如果我尝试将getAnswer()移动到按钮中的OnClickListener,如果单击单选按钮,除非单击其他单选按钮,否则它不会继续进行下一个活动 protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstan

他的是我创建的测验应用程序的第2部分。第一部分很好,但是在这一部分,当我点击一个单选按钮时,分数就会叠加起来。例如,如果我单击单选按钮2,然后单击单选按钮3,分数将变为3而不是2

如果我尝试将getAnswer()移动到按钮中的OnClickListener,如果单击单选按钮,除非单击其他单选按钮,否则它不会继续进行下一个活动

   protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.activity_part2);


   firebaseAuth = FirebaseAuth.getInstance();
   firebaseDatabase = FirebaseDatabase.getInstance();

   gadChoice1 = (RadioButton)findViewById(R.id.part2Choice1);
   gadChoice2 = (RadioButton)findViewById(R.id.part2Choice2);
   gadChoice3 = (RadioButton)findViewById(R.id.part2Choice3);
   gadChoice4 = (RadioButton)findViewById(R.id.part2Choice4);
   btnNext = (Button)findViewById(R.id.btnNext);

   getAnswer();

   DatabaseReference myRef = firebaseDatabase.getReference(firebaseAuth.getUid()).child("test");
   myRef.addValueEventListener(new ValueEventListener() {
       @Override
       public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
           UserHistory userHistory = dataSnapshot.getValue(UserHistory.class);
           anxHistory = userHistory.getAnx();
           depHistory = userHistory.getDep();

       }

       @Override
       public void onCancelled(@NonNull DatabaseError databaseError) {
           Toast.makeText(Part2.this, databaseError.getCode(), Toast.LENGTH_SHORT).show();
       }
   });

   btnNext.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {


                   anxValue = anxHistory + anx;

                   final DatabaseReference myRef = firebaseDatabase.getReference(firebaseAuth.getUid()).child("test");

                   myRef.addListenerForSingleValueEvent(new ValueEventListener() {
                       @Override
                       public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                           HashMap<String, Object> result = new HashMap<>();
                           result.put("anx", anxValue);
                           myRef.updateChildren(result);
                       }

                       @Override
                       public void onCancelled(@NonNull DatabaseError databaseError) {
                           System.out.println("The read failed: " + databaseError.getMessage());
                       }
                   });

           if(dep > anx){
               Intent myIntent = new Intent(Part2.this, Part3.class);
               startActivity(myIntent);
               finish();
           }else if (anx > dep){
               Intent myIntent = new Intent(Part2.this, Part3.class);
               startActivity(myIntent);
               finish();
           }
       }
   });   }

   private void getAnswer() {
   radioGroup2 = (RadioGroup) findViewById(R.id.radioGroup2);
   radioGroup2.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

       @Override
       public void onCheckedChanged(RadioGroup group, int checkedId) {
           if (checkedId == R.id.part2Choice2) {
               anx++ ;
           } else if (checkedId == R.id.part2Choice3)  {
               anx = anx + 2 ;
           }
           else if (checkedId == R.id.part2Choice4) {
               anx = anx + 3;
           }


       }
   });

   }
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_part2);
firebaseAuth=firebaseAuth.getInstance();
firebaseDatabase=firebaseDatabase.getInstance();
gadChoice1=(单选按钮)findViewById(R.id.Part2选择1);
gadChoice2=(单选按钮)findViewById(R.id.Part2选择2);
gadChoice3=(单选按钮)findViewById(R.id.Part2选择3);
gadChoice4=(单选按钮)findViewById(R.id.Part2选择4);
btnNext=(按钮)findViewById(R.id.btnNext);
getAnswer();
DatabaseReference myRef=firebaseDatabase.getReference(firebaseAuth.getUid()).child(“测试”);
myRef.addValueEventListener(新的ValueEventListener(){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
UserHistory UserHistory=dataSnapshot.getValue(UserHistory.class);
anxHistory=userHistory.getAnx();
depHistory=userHistory.getDep();
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
Toast.makeText(Part2.this,databaseError.getCode(),Toast.LENGTH_SHORT.show();
}
});
btnNext.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
anxValue=anxHistory+anx;
final DatabaseReference myRef=firebaseDatabase.getReference(firebaseAuth.getUid()).child(“测试”);
myRef.addListenerForSingleValueEvent(新的ValueEventListener()){
@凌驾
public void onDataChange(@NonNull DataSnapshot DataSnapshot){
HashMap结果=新建HashMap();
结果。put(“anx”,anx值);
myRef.updateChildren(结果);
}
@凌驾
已取消的公共void(@NonNull DatabaseError DatabaseError){
System.out.println(“读取失败:+databaseError.getMessage());
}
});
如果(dep>anx){
Intent myIntent=新的Intent(Part2.this,Part3.class);
星触觉(myIntent);
完成();
}否则如果(anx>dep){
Intent myIntent=新的Intent(Part2.this,Part3.class);
星触觉(myIntent);
完成();
}
}
});   }
私有void getAnswer(){
放射组2=(放射组)findViewById(R.id.RadioGroup 2);
RadioGroup 2.setOnCheckedChangeListener(新的RadioGroup.OnCheckedChangeListener(){
@凌驾
检查更改后的公共无效(RadioGroup组,int checkedId){
if(checkedId==R.id.part2选择2){
anx++;
}else if(checkedId==R.id.part2选择3){
anx=anx+2;
}
else if(checkedId==R.id.part2选择4){
anx=anx+3;
}
}
});
}

我希望输出是所选单选按钮的值,而不是我单击的单选按钮的总和。例如,如果我单击单选按钮A(0)、单选按钮B(1)、单选按钮C(2),我将记录的输出是2

您无法在
onCheckedChanged
中处理它,因为每次更改所选内容时,它都会递增。单击
btnNext
时,您可以对所选的一个进行测试:

int selectedItem = radioGroup2.getCheckedRadioButtonId();
if (selectedItem == R.id.part2Choice2) {
    anx++ ;
} else if (checkedId == R.id.part2Choice3)  {
    anx = anx + 2 ;
}
else if (checkedId == R.id.part2Choice4) {
    anx = anx + 3;
}

如果单击了
part2choice 1
,该怎么办?您没有条件检查它part2Choice1的值是0,所以我没有在那里包括它@维维克米什拉