android - 从 OnItemSelectedListener 调用值
问题描述
我将微调器中选定项目的值传递给字符串变量“selectedSpinner”,使用spinner.setOnItemSelectedListener()
. 我正在尝试在方法之外访问“selectedSpinner” 。
我试图将“selectedSpinner”分配给另一个字符串“selectedCategory”,但在spinner.setOnItemSelectedListener()
方法之外,“selectedSpinner”无法解析。应该怎么做才能在方法之外访问“selectedSpinner” ?谢谢
private void recordDialog() {
...
//get category
final Spinner spinner = subView.findViewById(R.id.spinner);
ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(this, R.array.category, android.R.layout.simple_spinner_item);
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
spinner.setAdapter(adapter);
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
String selectedSpinner = parent.getItemAtPosition(position).toString();
}
@Override
public void onNothingSelected(AdapterView<?> parent) {
}
});
final String selectedCategory = selectedSpinner;
...
final AlertDialog alertDialog = builder.create();
alertDialog.show();
}
解决方案
您需要声明selectedSpinner
外部recordDialog
函数(或将其设置为全局)
String selectedSpinner;
...
private void recordDialog() {
......
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
selectedSpinner = parent.getItemAtPosition(position).toString();
}
}
之后,您可以分配selectedSpinner
给selectedCategory
.
推荐阅读
- r - 如何将向量 c('foo', 'bar', 'baz') 转换为 c('foo_X', 'foo_Y', 'bar_X', 'bar_Y', 'baz_X', 'baz_Y')?
- sql - 当一组行包含布尔数据时,为具有相同 id 的一组行显示一个数值
- mongodb - 如何解决:错误:无法连接到服务器
:27017,连接尝试失败:连接被拒绝 - gpflow - 我将如何为 Gpflow 中的平均函数中的参数实现尖峰和平板先验?
- javascript - 从 URL 字符串中获取参数值
- php - 使用 .htaccess 更改服务器上的 PHP 版本不起作用
- ios - React Native 网络请求失败 iOS
- linux - 如何解决“致命配置文件错误”?
- angular - 如何使用`ngTemplateOutlet`绑定动态创建的组件的输入和输出?
- dynamics-crm - 使用 Power Automate 导入数据并在 CRM 中创建记录