我使用ListView
并在Adapter
方法上设置onResume
,因为我想要更新
活动恢复时的列表项。
我的问题是,这段代码在我的Nexus S设备上完美运行
但是当我尝试在另一台设备上运行相同的.apk
文件时,它会抛出
Null Pointer Exception
在
listView = (ListView) view.findViewById(android.R.id.list);
在下一行
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int i,
long l) {
Intent intent = new Intent(mContext, ClientInfoActivity.class);
intent.putExtra("id", clientIDs[i]);
startActivity(intent);
}
});
我不知道为什么它不在diff设备上工作?请帮忙。
答案 0 :(得分:3)
更改 listView =(ListView)view.findViewById(android.R.id.list) 至 listView =(ListView)view.findViewById(R.id.NameOfYourListView)
在 XML 文件中检查ListView的名称。
您实际上是在尝试使用Android的默认列表。
如果您不使用片段,则使用活动上下文而不是查看,如
this.findViewById(R.id.NameOfYourListView)
答案 1 :(得分:0)
您正在向listview对象引用错误的ID。
listView = (ListView) view.findViewById(android.R.id.list);
将 android.R.id.list 字段替换为您在xml文件中设置的ID。
答案 2 :(得分:0)
仅在某些设备上出现的NullPointer异常可能是由于其中一个xml布局中缺少id声明引起的。
当您为同一活动创建多个布局以为所有可能的屏幕尺寸或方向提供适当的方面时,您必须在每个布局中声明ID。
如果您没有声明布局的id,编译器将不会抛出错误或警告,因为资源将存在。所有将运行顺利的应用程序创建具有缺少id声明的特定布局的活动:仅在此时活动将崩溃显示异常。