我正在创建一个小测验应用。问题表明,如何在不禁用按钮的情况下阻止第二次点击?当我在单选按钮上单击两次时,它会增加2个点而不是1.非常感谢!
这是我的应用的图片:
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;
}
}
}
答案 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);
});
});