在一个活动中,我有一个datePicker(旋转器),它允许用户选择他们的出生日期,在此之下,用户还必须选择他们的性别。我有一个按钮,一旦设置了两个值(日期和性别),就会启用该按钮。尽管首先更改了值,但我现在面临的问题是启用该按钮。当前,用户必须选择其出生日期,然后选择其性别,才能激活该按钮。我希望无论首先更改哪个值都可以启用该按钮。
这是我的代码:
final RadioGroup rGroup = findViewById(R.id.gender_radio_group);
RadioButton female_radio_button = rGroup.findViewById(rGroup.getCheckedRadioButtonId());
RadioButton male_radio_button = rGroup.findViewById(rGroup.getCheckedRadioButtonId());
RadioButton non_binary_radio_button = rGroup.findViewById(rGroup.getCheckedRadioButtonId());
//Check if datePicker and gender radiobutton has been used, if true enable button
calendar.setTimeInMillis(System.currentTimeMillis());
datePicker_birthday.init(calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH), new DatePicker.OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) {
// This overrides the radiogroup onCheckListener
rGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
// This will get the radiobutton that has changed in its check state
RadioButton checkedRadioButton = group.findViewById(checkedId);
// This puts the value (true/false) into the variable
boolean isChecked = checkedRadioButton.isChecked();
// If the radiobutton that has changed in check state is now checked...
if (isChecked) {
continue_register_birthday_gender_button.setEnabled(true);
continue_register_birthday_gender_button.setBackground(ContextCompat.getDrawable(RegisterBirthDateAndGenderActivity.this,
R.drawable.button_active));
}
}
});
}
});
您的代码很少有问题。
如果用户首先选择了单选按钮选择,则不会触发rGroup.setOnCheckedChangeListener()。需要重新放置在onDateChanged()之外。
重定位后,它也将无法工作,因为无线电组侦听器不知道datePicker条目是否也被更改。
用户可以选择先更新性别,然后选择日期,反之亦然。可能的解决方案如下:
查看fixme
评论。
// fixme: Add class variables (booleans) to keep track of changed ui items
private Boolean isDatePickerOnDateChanged = false;
private Boolean isRadioGroupOnCheckedChanged = false;
// fixme: Re-locate rGroup.setOnCheckedChangeListener(..) to here.
RadioButton non_binary_radio_button = rGroup.findViewById(rGroup.getCheckedRadioButtonId());
rGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
public void onCheckedChanged(RadioGroup group, int checkedId) {
//...
isRadioGroupOnCheckedChanged = true;
if (isDatePickerOnDateChanged && isRadioGroupOnCheckedChanged) {
continue_register_birthday_gender_button.setEnabled(true);
}
// fixme: Remove previous rGroup.setOnCheckedChangeListener(..) inside onDateChanged() to above
datePicker_birthday.init(... {
@Override
public void onDateChanged(DatePicker datePicker, int year, int month, int dayOfMonth) {
//...
isDatePickerOnDateChanged = true;
if (isDatePickerOnDateChanged && isRadioGroupOnCheckedChanged) {
continue_register_birthday_gender_button.setEnabled(true);
}
isRadioGroupOnCheckedChanged = true;
if (isDatePickerOnDateChanged && isRadioGroupOnCheckedChanged) {
continue_register_birthday_gender_button.setEnabled(true);
}
可以简化为
isRadioGroupOnCheckedChanged = true;
if (isDatePickerOnDateChanged) {
continue_register_birthday_gender_button.setEnabled(true);
}
因为&& isRadioGroupOnCheckedChanged
前面的陈述总是正确的isRadioGroupOnCheckedChanged = true;
。
问题内容: (我对RESTFul不熟悉,如果我的概念有误,请纠正我) 在RESTFul体系结构中,我们将每个操作映射到URL。如果我单击“发布文章”,可能实际上是URL 和一些数据。 如果我要发布而不是刷新整个网页,则可以使用javascript的XMLHTTPRequest。我发布它,然后获取它的内容,并将其插入到页面的div中。这些动作都是异步的。 然后我知道有一个名为的东西,它是包装器。它使
我有一个测试类,它有一个带有CsvSource的参数化测试,还有其他使用CapturedOutput的测试。它们单独运行良好,但在一起运行时随机失败,没有任何接触异常。以下是示例代码: 对如何解决这个问题有什么想法吗? PS:我无法创建另一个测试文件。
{“时间戳”:1553613278534,“状态”:400,“错误”:“错误请求”,“消息”:“必需的字符串参数'param2'不存在”,“路径”:“/MyURL/42”} 我希望PUT的工作就像POST一样,但它似乎不是。 不幸的是,我不能将参数作为QueryParam发送,因此我应该维护相同的请求调用,因为我正在重构一个完全以这种方式工作的现有endpoint。
我有一个项目,我正在通过GSON和Volley阅读一些json。我想把我的数据保存在数据库中,我希望Realm是一个好的解决方案。我选择了我的第一个类,它有七个成员变量,所有的Strings和int,并让它扩展RealmObject,并将其中一个int确定为主键。它编译得很好,但是当它运行时,我在日志中得到大量的输出,最终应用程序在显示主要活动之前就崩溃了。GSON似乎不喜欢解析扩展了RealmO
问题内容: 一个星期以来,我一直在思考Webmachine应用程序中Redis使用的问题。而且我还没有开悟。 我将使用Eredis,这是用法示例: 据我了解,应该只在某个地方调用一次。但是,如何获得资源的可变性呢? 问题答案: 有几种解决方案: 在本地或全局注册Redis连接 使用gproc之类的进程寄存器 将连接的pid保留在webmachine资源上下文中 使用连接池,例如pooler或poo
我已经成功地建立了TailwindCSS上Gridsome以下说明:https://gridsome.org/docs/assets-css/#tailwind 但是,这些说明并没有提到如何设置autoprefixer。因此,我自己尝试了一下,如下所示: npm安装自动刷新器 修改了文件(请参见下面的修改代码,其中包含我所更改内容的注释) 运行 将类添加到以查看是否添加了任何供应商前缀 结果。。。