我通常使用布尔值,但在这种情况下,我不能。我的 Spinner 上有如下代码,一切正常:
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
carNames = brand.getChildCarNames(brand.getListDataHeader().get(position));
makeAndShowDialogBox();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});
问题是当我使用bolean时会发生的事情是,如果用户选择默认值,那么作为Default的选择不会显示DialogBox。例如“Tomato”为Default,用户也想选择“Tomato”;没有任何事情发生。
我想要做的是防止此对话框在活动打开时尽快出现,但我也想阻止“在选择默认值时没有任何反应”问题。
那么,有没有办法确切地检查用户是否按下了选择?
答案 0 :(得分:0)
您可以使用布尔变量来确定是否刚刚加载了微调器,因此可以阻止在打开活动(或onResume)时显示对话框。您可以在侦听器外声明一个变量,并在侦听器中更改其值。它的值在侦听器中更改,因此您必须执行最终布尔数组而不是常规布尔值。
您可以尝试使用以下代码:
final Boolean[] spinnerLoaded = {false};
spin.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
if (!spinnerLoaded[0]) {
spinnerLoaded[0] = true;
}
else {
carNames = brand.getChildCarNames(brand.getListDataHeader().get(position));
makeAndShowDialogBox();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
// TODO Auto-generated method stub
}
});