You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android开发Spinner控件找不到setText()、getText()方法报错问题咨询

Spinner 报错修复方案

Android 原生 Spinner 组件本身未提供 getText() 和 setText() 方法,你的报错均为 API 调用错误,具体修复如下:


1. 修复 RegisterBook.java 报错

你这里存在两处错误:一是误用 Spinner 不存在的 getText() 方法,二是错误地给 String 类型变量调用了 Spinner 才有的 getSelectedItem() 方法。
修改后代码:

Spinner spinnerCategory_book;
spinnerCategory_book = findViewById(R.id.spinnerCategory_book);

// 正确获取 Spinner 选中项文本
String category_book = spinnerCategory_book.getSelectedItem().toString();

// 校验是否选中默认提示项
if (category_book.equals("Choose the book category")){
    Toast.makeText(RegisterBook.this,"表单字段不能为空",Toast.LENGTH_SHORT).show();
}

2. 修复 BookAdapter.java 报错

Spinner 没有 setText() 方法,要指定选中某一项,需要先找到目标文本对应在选项列表中的索引,再调用 setSelection() 方法选中即可。
修改后代码:

public void onBindViewHolder(@NonNull final ViewHolder holder, final int position) {
    final Book f_book = books.get(position);
    String targetCategory = f_book.getCategory_book();
    // 遍历查找目标分类对应的选项索引
    for (int i = 0; i < holder.spinnerCategory_book.getAdapter().getCount(); i++) {
        if (holder.spinnerCategory_book.getAdapter().getItem(i).toString().equals(targetCategory)) {
            holder.spinnerCategory_book.setSelection(i);
            break;
        }
    }
}

可选优化:禁止选中默认提示项

不需要通过文本对比判断,直接通过选中位置判断更高效,给 Spinner 添加选中监听即可:

spinnerCategory_book.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
    @Override
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
        if (position == 0) {
            Toast.makeText(RegisterBook.this,"请选择书籍分类",Toast.LENGTH_SHORT).show();
            // 可在这里补充其他拦截逻辑
        }
    }

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

内容的提问来源于stack exchange,提问作者Javlo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 15:36:03