Java 如果单击不同的单选按钮,则仅保存最后一个单选按钮的值
他的是我创建的测验应用程序的第2部分。第一部分很好,但是在这一部分,当我点击一个单选按钮时,分数就会叠加起来。例如,如果我单击单选按钮2,然后单击单选按钮3,分数将变为3而不是2 如果我尝试将getAnswer()移动到按钮中的OnClickListener,如果单击单选按钮,除非单击其他单选按钮,否则它不会继续进行下一个活动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
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,所以我没有在那里包括它@维维克米什拉