由于某种原因,我的onListItemClick(查看listView,视图视图,int位置,长id){}在某些条件下不会触发。我的应用程序是这样的。ListActivity触发另一个活动,有时用户或其他条件可能导致该活动以结果结束。第一次触发ListActivity时,意味着调用onCreate方法,那么onListemClick()总是工作的。用户第一次返回到相同的活动时,情况也是一样的,然后onListItemClick总是工作的。当用户第二次返回ListActivity时,就会出现这个问题,那么onListItemClick根本就不会触发,就像根本没有连接到视图的侦听器一样。
我做了两次检查是否设置了一个listAdapter。这是标准的ArrayAdapter。所有其他侦听器都是功能性的,因此我怀疑ListActivity由于某些原因没有被用作侦听器,但我不知道为什么。这是完全相同的代码,两次运行的值完全相同,但由于某种原因,侦听器似乎是空的。代码是在调用onResume (Int)之后从行中的setContentView方法执行的。有人知道为什么会这样吗?
下面的代码启动布局,那里没有问题,一切都是按照预期进行的。
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之后工作,并且用户第一次导航回当前活动。
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);
}发布于 2013-10-10 07:49:07
我从来不知道这是怎么回事。我想出的解决方案不是使用继承,而是手动实现OnItemClickListener。现在每次都起作用了。
发布于 2013-10-04 13:29:02
在oncreate中进行初始化工作,并在oncreate()方法中设置适配器。您可能没有在OnResume()方法中设置侦听器。或者在恢复方法中设置侦听器等于null。
发布于 2013-10-04 13:32:12
重新初始化您的列表或侦听器在Onresume()方法!您的解决方案只存在于onResume()方法中。
https://stackoverflow.com/questions/19182333
复制相似问题