android - 为什么我从微调器项目中得到空值?
问题描述
我是安卓新手。当我尝试获取微调器的选定项目时,我得到空值。
我尝试设计两个 Spinner,当单击按钮时,将其中一个 Spinner 的选定项目写入文本字段。但我越来越空了。你能解释一下原因吗?
public class EERActivity extends AppCompatActivity implements
OnItemSelectedListener {
private Spinner spinner1;
private Spinner spinner2;
private String[] array1= {"xx","yy"};
private String[] array2= {"x2", "y2"};
private ArrayAdapter<String> dataAdapterForArray1;
private ArrayAdapter<String> dataAdapterForArray2;
String selected1;
String selected2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_eer);
spinner1 = (Spinner)findViewById(R.id.spinner2);
spinner2 = (Spinner)findViewById(R.id.spinner3);
dataAdapterForArray1 = new ArrayAdapter<String>(this,
android.R.layout.simple_spinner_item, array1);
//and 2 is here..//
spinner1.setAdapter(dataAdapterForArray1);
spinner2.setAdapter(...filled...);
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position,
long id) {
if(parent.getId() == R.id.spinner2) {
selected1 = spinner1.getSelectedItem().toString();
}
else if(parent.getId() == R.id.spinner3){
selected2 = spinner2.getSelectedItem().toString();
}
selectedSpinner1 = spinner1.getSelectedItem().toString();
selectedSpinner2 = spinner2.getSelectedItem().toString();
}
public void onNothingSelected(AdapterView<?> arg0) {
}
public void run (View view){
textView.setText("Result: " + selected1); }
我希望输出是从 spinner1 中选择的,但结果为空。
解决方案
很有可能在微调器组件中实际更改值之前触发了事件。为了解决这个问题,您可以添加一个空检查。尝试在“onItemSelected”方法的第一行添加以下内容:
if ((parent.getId() == R.id.spinner2 && spinner1.getSelectedItem() == null) || (parent.getId() == R.id.spinner3 && spinner2.getSelectedItem() == null)) {
return ;
}
另外,我不确定您是否发布了整个代码,但这看起来是错误的:
spinner1 = (Spinner)findViewById(R.id.spinner2);
spinner2 = (Spinner)findViewById(R.id.spinner3);
推荐阅读
- python-3.x - 如果实例实际上只是指向 Python 中的对象的指针,那么当我更改特定实例中数据属性的值时会发生什么?
- angular - Ngrx store Selector cannot access state
- ruby-on-rails - rails gem rswag 自定义参数
- python-3.x - 使用 openpyxl ValueError Duplicate position 0.0 加载工作簿
- swift - 将窗口移动到活动空间
- java - 如何使用 node-java 模块在 .js 文件中导入自己的 java 类?
- pyspark - 我需要计算 pyspark 中电影的平均收视率
- mongodb - MongoDB currentOp() 和 Cursor.explain() 显示相同查询的不同结果
- python - 为什么以下与 sklearn 预处理相关的 python 代码不起作用,我该如何调试它?
- serilog - Serilog:如何仅在文件开头写入文件头?