我创建了一个微调器,其中第一个选择显示为默认值。但如果我点击这个,它不会起作用。
protected boolean inhibit_spinner = true;
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String item = parent.getItemAtPosition(position).toString();
if (inhibit_spinner) {
inhibit_spinner = false;
}else {
Toast.makeText(parent.getContext(), item, Toast.LENGTH_LONG).show();
Intent intent = new Intent(Selection.this, MainActivity.class);
intent.putExtra("selection", item);
startActivity(intent);
finish();
}
}
public void onNothingSelected(AdapterView<?> arg0) {
// TODO Auto-generated method stub
}
如果我点击微调器并选择它引发活动的任何其他选项,但如果我点击它并选择默认值(第一个选项),它不会引发活动。为什么?
onItemSelected函数。
例如:
如果您的微调器项目是项目1、项目2、项目3和项目4。
- 选择item4,然后调用onItemSelected函数,位置为3
- 再次选择item4,但这次不会调用onItemSelected函数
- 选择item0,然后调用onItemSelected函数,位置为0
- 再次选择item0,但这次不会调用onItemSelected函数
我认为您需要稍微更改一下应用程序流程。为用户提供一个按钮,而不是转到选择微调器项目的下一个活动。用户可以使用微调器选择他想要的选项。当他点击按钮时,使用函数"spinner.getSelectedItem()"从微调器中获取当前选定的项目,并将其传递给下一个活动。
如果这不能解决你的问题,请告诉我。
默认情况下,选择第一个选项(位置0)。因此不会调用onItemSelected,因为位置尚未更改。
尝试添加类似"Select one"的元素作为第一个选项以避免这种行为。