在我的应用程序中,我有一个显示元素列表的微调器。用户可以选择其中一个,然后单击“确认”按钮。 但是,元素列表也可能为空:在这种情况下,我不希望启用该按钮。我尝试以编程方式完成此行为,但我没有成功:按钮始终显示为已启用。我错过了什么? 这是我的代码:
Spinner dropdownProperty;
AppCompatButton confirmBtn;
...
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
dropdownProperty.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
if(dropdownProperty.getSelectedItem().toString().equals(""))
confirmBtn.setEnabled(false);
else confirmBtn.setEnabled(true);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
...
}
我也试图在onNothingSelected方法中管理这种情况,但它没有帮助。
有什么想法吗?谢谢
答案 0 :(得分:1)
您只在Button
内启用/停用OnItemSelectedListener
,这意味着用户实际上必须选择一个项目才能设置按钮的状态。如果没有可供选择的项目,那将永远不会发生。
您应该在下拉列表中的项目发生更改时启用/禁用Button
。我无法看到您的其余代码,但可能是您正在使用某个列表设置dropdownProperty
。只需检查列表是否为空,并相应地设置Button的状态。
答案 1 :(得分:0)
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//first disable confirm button
confirmBtn.setEnabled(false);
dropdownProperty.setOnItemSelectedListener(new
AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
if(dropdownProperty.getSelectedItem().toString().equals(""))
confirmBtn.setEnabled(false);
else confirmBtn.setEnabled(true);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
...
}
注意:如果你选择了默认值,那么最初可以修改它。
答案 2 :(得分:0)
默认情况下,您应该在视图的XML中禁用按钮,或者如果要在java中创建按钮,则在创建时禁用它。仅在从微调器中选择项目时启用它。