1
現在我意識到添加聽衆,然後設置字段會觸發更改。所以我設置我的領域,然後添加監聽器。爲什麼我的聽衆觸發快樂
我甚至在觸發時添加了一個布爾值,以避免這種情況。但是在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後,沒有什麼改變,即使如此它不應該被解僱。在恢復字面上只是將布爾值設置爲true。這是應用程序運行之前的最後一個狀態,所以我不確定它觸發的位置和原因。它的Super在被允許使用觸發器之前被調用。
我們可以看看剩下的代碼嗎? (設置字段並添加監聽器)至少有一個例子,所以我們可以看到你在做什麼。 – Th0rndike
@ Th0rndike有我們去:)當它第一次嘗試觸發(創建偵聽器時),它由於布爾值而跳過。但是之後在'onResume();'在活動初始化期間的某個點觸發 – Doomsknight
如果刪除onResume()方法,它們會觸發嗎? – Alexander