如果已经选中了RadioButton,请阻止第二次点击

时间:2017-10-23 17:43:29

标签: java android

我正在创建一个小测验应用。问题表明,如何在不禁用按钮的情况下阻止第二次点击?当我在单选按钮上单击两次时,它会增加2个点而不是1.非常感谢!

这是我的应用的图片:

enter image description here

public void question1 (View view) {
    boolean checked = ((RadioButton) view).isChecked();

    switch (view.getId()) {
        case R.id.question1_9:
            if (checked) {
                scoreForRadioButtons += 1;
            }

        case R.id.question1_8:
            if (checked) {
                break;
            }
        case R.id.question1_7:
            if (checked) {
                break;
            }
    }
}

解决

这就是我所做的:只需添加'break;'在正确的答案。

public void question1 (View view) {
    boolean checked = ((RadioButton) view).isChecked();

    switch (view.getId()) {
        case R.id.question1_9:
            if (checked) {
                pointForQ1 = 1;
                break;
            }
        case R.id.question1_8:
            if (checked) {
                pointForQ1 = 0;
            }
        case R.id.question1_7:
            if (checked) {
                pointForQ1 = 0;
            }
    }
}

4 个答案:

答案 0 :(得分:3)

简答:

如果您确实想要使用以下内容,则可以在点击clickable后将RadioButton属性设置为false:

myRadioButton.setClickable(false);

长答案:

不要使用单选按钮。用户应该可以根据需要多次单击一个单选按钮,而不会发生任何事情,例如在您的情况下增加分数。它是单选按钮的标准约定,一旦被选中,如果一次又一次地选择它,则不执行新代码。 请注意,仅当选择期间单选按钮的状态未发生变化时(状态表示是否选择了)。

您的应用使用(或想要使用)RadioButtons的方式不正确。我建议使用按钮,您可以执行以下操作:

myButton.setEnabled(false);

修改

如果您想让用户看到他们点击按钮,您可以做一些事情(更改文本,更改背景颜色)。对于此示例,您可以使用以下方法更改背景颜色:

myButton.setBackgroundColor(Color.GREEN);   // or whatever colour you choose

如果您想这样做,请在导入中添加以下内容:

import android.graphics.Color

答案 1 :(得分:1)

如果您只是不想再点击该单选按钮两次,单击单选按钮后, 添加view.setEnabled(false);view.setClickable(false);以阻止它再次点击

答案 2 :(得分:0)

要防止第二次点击已选中的单选按钮,请禁用该无线电

radioButton.setEnabled(false);

答案 3 :(得分:0)

禁用单击按钮并在选中其他按钮时启用它

describe('SearchComponent', () => {
  let component: SearchFormComponent;
  let fixture: ComponentFixture<SearchFormComponent>;

  const searchParams = Object.freeze({});

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [ReactiveFormsModule],
      declarations: [ SearchFormComponent ],
      providers: [
        FormBuilder,
        { provide: ActivatedRoute, useValue: { 'queryParams': Observable.of(searchParams) } },
        { provide: Router, useValue: jasmine.createSpy('navigate') }
      ],
    })
    .compileComponents();
  }));

  const updateForm = (control, value) => component.searchForm.controls[control].setValue(value);

  beforeEach(() => {
    fixture = TestBed.createComponent(SearchFormComponent);
    component = fixture.componentInstance;
    component.ngOnInit();
  });

  fit(`should disable a search button`, () => {
    const submitButton = fixture.debugElement.query(By.css('button[type="submit"]'));
    console.log(submitButton.nativeElement.disabled);
    console.log(component.searchForm.invalid);
  });

});