编辑:我做了一个解决方法,并解决了我的问题。 我对微调器的布局看起来像
<LinearLayout>
<Spinner>
<TextView> //used as a label
</LinearLayout>
我删除了LinearLayout。虽然只要选择了State,City旋转器就不会自动填充项目,但我可以手动输入City的值。
线性布局怎么可能搞乱我的微调器的行为?
我有一个注册表格,底部有多个Edittexts和3个微调器,即State,City,Area。
我希望能够做的是以下
Code在Kitkat上工作正常。但是在JellyBean及以下,每当我选择一个State时,其他的微调器都不显示任何东西。选择状态后,当您单击“城市”时,它将显示正确的数据集,但是当我单击某个项目时,微调器仍为空白。 (onItemSelected不会触发。)
奇怪的是,每当微调器行为不端时,如果我点击我视图中的一个Edittexts(将显示softKeyboard)&gt;按下后退按钮&gt; Spinner工作。我不确定它是否与焦点有关?但我已经尝试将微调器设置为可聚焦和focusableInTouchMode然后请求焦点,但无济于事。
这就是我如何设置微调器的适配器和内容
state.setAdapter(stateAdapter);
state.setSelection(0, false);
state.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
stateSelection = parent.getItemAtPosition(position).toString();
cityAdapter = new ArrayAdapter<String>(getActivity(), R.layout.sherlock_spinner_item, getDistinctCity(stateSelection));
cityAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
city.setAdapter(cityAdapter);
areaAdapter = new ArrayAdapter<String>(getActivity(), R.layout.sherlock_spinner_item, new String[]{});
areaAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
area.setAdapter(areaAdapter);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
city.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
citySelection = parent.getItemAtPosition(position).toString();
areaAdapter = new ArrayAdapter<String>(getActivity(), R.layout.sherlock_spinner_item, getDistinctArea(stateSelection, citySelection));
areaAdapter.setDropDownViewResource(R.layout.sherlock_spinner_dropdown_item);
area.setAdapter(areaAdapter);
}
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
area.setOnItemSelectedListener(new OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
areaSelection = parent.getItemAtPosition(position).toString();
postalSelection = getDistinctPostal(stateSelection, citySelection, areaSelection);
postal.setText(postalSelection);
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
如果有人能向我解释为什么微调器会表现得像这样,或者可能引导我走向正确的方向,那就太棒了。谢谢