多个微调器和 onItemSelected

新手上路,请多包涵

我有两个触发 onItemSelected 事件的微调器。问题是我怎么知道是哪一个触发了这样的事件?到目前为止我试过:

  public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{

    Log.d("form","onitemselected");
    switch (view.getId()) {
    case R.id.region_spinner:
        Region r = (Region)sregions.getSelectedItem();
        Log.d("form","regionid:" + r.id);
        break;
    case R.id.state_spinner:
        Log.d("form","state id:");
        break;
    }

但是只显示第一个日志,所以在开关中没有匹配项。

原文由 xain 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 318
2 个回答

采用:

 switch(parent.getId()) {
    ...
}

相反是你需要的。您参数中的 view 是实际的“行”(即微调项的点击子项),而父项是您所追求的实际“微调器”。

原文由 xandy 发布,翻译遵循 CC BY-SA 2.5 许可协议

如果您在一个活动中有多个微调器并且您正在使用 onItemSelected 覆盖方法,请使用以下代码

override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
         if (parent!!.id == R.id.spinner_1) {
            // first spinner selected
         } else if (parent!!.id == R.id.spinner_2) {
            // second spinner selected
         }
    }

或者你可以使用开关盒

原文由 Aditya Patil 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题