2014-10-20 87 views
0

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

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 

} 

如果我点击微调并选择它抛出活动的任何其他选择,但如果我点击它,选择默认值(首选),它不抛出的活动。为什么?

回答

2

onItemSelected函数只有在用户在微调框中选择与当前选定项目不同的项目时才会被调用。

例如:

如果微调项目项目1,项目2,项目3和ITEM4。

  • 选择ITEM4,然后onItemSelected功能将与位置项目4又被称为3.
  • 选择,但是这一次onItemSelected功能不会被调用。
  • 选择item0,则onItemSelected函数将被调用,位置为0.
  • 再次选择item0,但是这次onItemSelected函数将不会被调用。

我相信你需要改变一下应用程序流程。而不是去选择微调项目的下一个活动,提供一个按钮给用户。用户可以使用微调器选择他想要的选项。当他点击按钮时,使用函数“spinner.getSelectedItem()”从微调器中获取当前选定的项目,并将其传递给下一个活动。

请让我知道如果这不解决您的问题。

0

默认情况下,第一个选项被选中(位置0)。因此不会调用onItemSelected,因为该位置未被更改。

尝试添加“选择一个”之类的元素作为避免此行为的第一个选项。

相关问题