【问题标题】:Spinner onItemSelected does not work微调器 onItemSelected 不起作用
【发布时间】:2017-04-07 08:45:34
【问题描述】:
private Spinner spinnerMonth;

public View onCreateView(LayoutInflater inflater
        , @Nullable ViewGroup container
        , @Nullable Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    _view = inflater.inflate(R.layout.fragment_spinnerMonth, container, false);
     // Month
    spinnerMonth = (Spinner) _view.findViewById(R.id.spinnerMonth);
    spinnerMonth.setAdapter(monthAdapter);
    spinnerMonth.setSelection(_selectedMonth - 1);
    return _view;
}

private void saveData() {
    spinnerMonth.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Log.d("month",i);        
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
}

我上面的代码。如果我确定一个全局 Spinner,onItemSelected 不起作用。如果我确定一个本地微调器,它是工作。为什么会这样?我需要一个全局 Spinner。

【问题讨论】:

  • 在 onActivity 创建方法中编写微调器 onitemclicklistner
  • saveData() 什么时候执行?
  • bingo 主要问题是private void saveData() 将此代码放入 onCreateView ... 应在方法中创建视图时设置列表器。如果您想要方法然后在 onCreateView 中调用此方法

标签: android android-spinner onitemselectedlistener


【解决方案1】:

找到解决办法

public View onCreateView(LayoutInflater inflater
        , @Nullable ViewGroup container
        , @Nullable Bundle savedInstanceState) {
    super.onCreateView(inflater, container, savedInstanceState);
    _view = inflater.inflate(R.layout.fragment_spinnerMonth, container, false);
     // Month
    spinnerMonth = (Spinner) _view.findViewById(R.id.spinnerMonth);
    spinnerMonth.setAdapter(monthAdapter);
    spinnerMonth.setSelection(_selectedMonth - 1);
    spinnerMonth.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int i, long l) {
        Log.d("month",i);        
        }

        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
    return _view;
}

【讨论】:

  • 您的代码正在运行,但我需要在单击保存按钮时触发 setOnItemSelectedListener。这就是它不起作用的原因。
  • @mute_person 仍然是全局微调器。好吧,只需要在 onCreate 方法中调用 Savedata() 就可以了
【解决方案2】:

要为微调器定义选择事件处理程序,请实现 AdapterView.OnItemSelectedListener 接口和相应的 onItemSelected() 回调方法。

spinner.setOnItemSelectedListener(new OnItemSelectedListener() 
    {
        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) 
        {
            String selectedItem = parent.getItemAtPosition(position).toString();

        } // to close the onItemSelected
        public void onNothingSelected(AdapterView<?> parent) 
        {

        }           
    });

https://developer.android.com/guide/topics/ui/controls/spinner.html

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-11-25
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-12
    • 2013-04-19
    相关资源
    最近更新 更多