为什么我不能选择第一选择的微调器



我创建了一个微调器,其中第一个选择显示为默认值。但如果我点击这个,它不会起作用。

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"的元素作为第一个选项以避免这种行为。

最新更新