由於某種原因,我的onListItemClick(View listView,View view,int position,long id){}在某些條件下不會觸發。我的應用程序像這樣流動。 ListActivity觸發另一個活動,有時用戶或其他條件可能導致該活動結果結束。 ListActivity第一次被觸發時,意味着onCreate方法被調用,那麼onListemClick()總是起作用。第一次用戶返回相同的活動時,情況也是如此,然後onListItemClick始終工作。問題出現在用戶第二次返回到ListActivity時,那麼onListItemClick根本不會觸發,就像沒有監聽器連接到視圖一樣。ListActivity - onListItemClick
我確實重複檢查過設置了listAdapter。它是標準的ArrayAdapter。所有其他的監聽器都是有效的,所以我懷疑是由於某種原因ListActivity不能用作監聽器,但我無法理解爲什麼。它是完全相同的代碼,兩次運行的值完全相同,但由於某種原因,聽衆似乎是空的。該代碼是在調用setContentView(int id)之後的onResume方法中執行的。有誰知道爲什麼會發生這種情況?
下面的代碼啓動佈局,那裏沒有問題,它都按預期運行。
private void initLayout(){
projectsToList(user.getProjects());
ttvEmailField = (TextView) findViewById(R.id.ttv_email);
ttvNameField = (TextView) findViewById(R.id.ttv_username);
String email = user.getEMail();
String name = user.getName();
if(email != null && email.length() > 0){
ttvEmailField.setText(user.getEMail());
}
if(name != null && email.length() > 0){
ttvNameField.setText(user.getName());
}
btnLogout = (Button) findViewById(R.id.btn_logout);
btnLogout.setOnClickListener(this);
}
下面的代碼設置一個ArrayAdapter時,onListItem只適用的onCreate之後並在第一時間將用戶導航回currentactivity。
private void projectsToList(List<ProjectPojo> projects){
int max = projects.size();
String[] arrProjects = new String[max];
for(int i = 0; i < max; ++i){
arrProjects[i] = projects.get(i).getName();
}
ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, R.layout.list_item_simpletext, R.id.ttv_listtextview, arrProjects);
setListAdapter(adapter);
}
oncreate方法只會調用super.onCreate,實際的類初始化發生在onResume中,因爲即使活動被恢復,也不會創建該方法。由於聽衆是'這個'它真的不能真正爲空,我認爲,它實際上工作一次後,用戶已從其他活動導航回來。我有雙重檢查,沒有值爲空。 – Geir