由于某种原因,我的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