Spinner默认选中30报错:setSelected(boolean)无法应用于int
解决Spinner设置默认选项的报错问题
嘿,这个小坑我之前踩过!你之所以会报错,核心原因是搞混了两个名字相近但功能完全不同的方法:
你用的setSelected(boolean)是View类的通用方法,它只负责设置视图本身是否处于“选中”状态(比如复选框的勾选状态),根本不是用来指定Spinner选中哪个选项的。而Spinner专门提供了setSelection(int position)方法来设置选中的选项位置。
直接把报错的代码行替换掉就行,修正后的完整代码如下:
String[] items = new String[]{"15", "30", "60", "90", "Off"}; ArrayAdapter<String> adapter = new ArrayAdapter<>(this, android.R.layout.simple_spinner_dropdown_item, items); // 注意:必须先给Spinner设置适配器,否则设置选中项不会生效 dropdown.setAdapter(adapter); int spinnerPosition = adapter.getPosition("30"); // 用Spinner专属的setSelection方法替代setSelected dropdown.setSelection(spinnerPosition);
额外给你加个小提示:可以加个防御性判断,避免如果数组里找不到目标字符串时出现异常(getPosition()找不到对应值会返回-1):
if (spinnerPosition != AdapterView.INVALID_POSITION) { dropdown.setSelection(spinnerPosition); }
这样就能稳稳把"30"设为Spinner的默认选项啦!
内容的提问来源于stack exchange,提问作者RGS
相关产品推荐
相关产品推荐

