安卓开发中使用if else设置Spinner后如何将值传给setOnClick做判断
Spinner选中值获取实现方案
方案1:复用已有的选中监听存储变量
你代码中已经在OnItemSelectedListener里定义了spinner_item存储选中值,只需要做两个调整即可:
- 确保
spinner_item是Activity/Fragment的全局成员变量,不要在监听方法内部声明,否则点击事件无法访问,示例声明:
public class YourActivity extends AppCompatActivity { // 顶部声明全局变量,初始值为空 private String spinner_item = ""; // 后续的onCreate、Firebase监听等逻辑 }
- 优化选中监听的逻辑,避免选中默认提示项时还保留上一次的选中值:
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { String chooseTip = getApplicationContext().getResources().getString(R.string.choose_sub); if(parent.getItemAtPosition(position).equals(chooseTip)){ // 选中提示项时清空存储变量,方便后续判断 spinner_item = ""; } else { spinner_item = parent.getItemAtPosition(position).toString(); } } @Override public void onNothingSelected(AdapterView<?> parent) { spinner_item = ""; } });
之后在点击事件中直接判断即可:
post.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // 引入android.text.TextUtils做非空判断,避免空指针 if(!TextUtils.isEmpty(spinner_item)){ // 此处写选中后的逻辑,spinner_item即为当前选中的值 }else { Toast.makeText(getApplication(), getApplicationContext().getResources().getString(R.string.must_upload), Toast.LENGTH_SHORT).show(); } } });
方案2:点击事件中实时获取选中值(更稳妥,无变量同步问题)
不需要依赖全局存储变量,直接在点击时从Spinner实例中取当前选中值,适合选项动态更新的场景:
post.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { String chooseTip = getApplicationContext().getResources().getString(R.string.choose_sub); // 实时取选中值,做空判断避免空指针 String selectedValue = spinner.getSelectedItem() != null ? spinner.getSelectedItem().toString() : ""; if(!selectedValue.equals(chooseTip) && !TextUtils.isEmpty(selectedValue)){ // 此处写选中后的逻辑,selectedValue即为当前选中的值 }else { Toast.makeText(getApplication(), getApplicationContext().getResources().getString(R.string.must_upload), Toast.LENGTH_SHORT).show(); } } });
注意事项
- 两种方案都建议使用
TextUtils.isEmpty()做判空,避免空指针异常 - 如果Spinner选项会动态变更,优先选方案2,避免全局变量和实际选中值不同步
内容的提问来源于stack exchange,提问作者user16489264
相关产品推荐
相关产品推荐

