现在我知道添加侦听器,然后设置字段会触发更改。所以我设置我的字段然后添加监听器。
我什至在触发时添加了一个布尔值,以避免这种情况。但是在 OnResume 之后。我所有的听众都在发火。有人可以解释为什么,以及如何阻止它。谢谢。
这是我的代码/工作流程:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
spn1.setSelection(2);
spn2.setSelection(15); // Gets replaced by the listener to 2, when it shouldnt!
UseListeners = false; // Ignores fired events with an IF statement.
addListeners();
//UseListeners = true;
}
@Override
protected void onResume() {
super.onResume();
UseListeners = true;
}
private void addListeners() {
spn1.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@Override
public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
try{
if(UseListeners){
spn2.setSelection(spn1.getSelectedItemPosition());
}
} catch (Exception e)
{
}
}
@Override
public void onNothingSelected(AdapterView<?> arg0) {
}
});
}
当然在 OnResume 之后,什么都没有改变,所以它不应该被触发。从字面上看,简历只是将布尔值设置为真。这是应用程序运行之前的最后一个状态,所以我不确定它在哪里以及为什么会触发。它的 Super 在被允许使用触发器之前被调用。