选择项目上的android微调器点击监听器不触发

标签 android android-spinner

这就是我定义微调器的方式

s_province = (Spinner) findViewById(R.id.s_province);
        ArrayAdapter<String> provinceAdapter = new ArrayAdapter<String>(this,
                android.R.layout.simple_spinner_item, Data.provinces);
        provinceAdapter
                .setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        s_province.setAdapter(provinceAdapter);
        s_province.setOnItemSelectedListener(this);

我的类是从 OnItemSelectedListener 实现的,我覆盖了这个方法

@Override
    public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
            long arg3) {
        // TODO Auto-generated method stub
        switch (arg1.getId()) {
        case R.id.s_province:
            Log.d("here", "there");
            break;

        default:
            break;
        }
    }

    @Override
    public void onNothingSelected(AdapterView<?> arg0) {
        // TODO Auto-generated method stub

    }

但是 onItemSelect 没有被触发,为什么?

最佳答案

两件事:

  1. 如果您真的想检查您的方法是否有效,请在 switchdefault 情况下放置一个 Log 语句这样您就可以确定正在调用该方法。

  2. that represents position 起您应该使用 arg2 .让您的开关与位置一起工作,而不是通过传递的任何 View 。还可以使用 Eclipse 分配的默认名称重命名您的变量。 arg0,1,2,etc 对您和其他查看您代码的人都没有帮助。

例如

@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id){
  Toast.makeText(view.getContext(),"onItemSelected called", Toast.LENGTH_LONG).show();
  int spinnerId = parent.getId();
  if (spinnerId == R.id.s_province)
  {
    switch (position)
    {
      case 0: 
        //do something if first position was clicked
      break:
      case 1:
        //do something else
        break;
      default: 
        //if for any reason no position matches.
        break;
    }
  }
  else if (spinnerId == R.other_id_in_xml)
  {
    switch (position)
    {
      case 0: 
        //do something if first position was clicked
      break:
      case 1:
        //do something else
        break;
      default: 
        //if for any reason no position matches.
        break;
    }
  }
  //etc
}

关于选择项目上的android微调器点击监听器不触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14656015/

相关文章:

android - 访问微调器选项 UI

java - Spinner Android Studio 出现问题

java - 以编程方式 android 中 LinearLayout 中微调器和 TextView 的布局对齐

java - 使用可扩展字符串设置两个第一个单词的样式

android - 如何在 Jetpack Compose 中填充矢量图像的背景?

android - Android 上的线程化低延迟音频

android - 替代 Android 中存在严重缺陷的 SPINNER CLASS

Java for android 错误 : "IR emitter not available" in a device that HAS IR support

java - 如何更改 Android Canvas.drawTextOnPath() 的输出

android - 无法在 android 中为微调器设置 OnItemClickListener