我的代码如下:
public class EventActivity extends AppCompatActivity {
ListView listView;
ItemAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.attaction_list);
ArrayList<Item> items = new ArrayList<>();
items.add(new Item("a", "a", a));
items.add(new Item("b", "b", b));
items.add(new Item("c", "c", c));
adapter = new ItemAdapter(this, items, R.color.event);
listView = (ListView) findViewById(R.id.list);
if(adapter != null) {
listView.setAdapter(adapter);
}
}
}
Andoid Studio编辑器指示listView.setAdapter(adapter)
可能导致nullpointer异常。任何人都可以解释这个警告来自何处以及如何解决它?
答案 0 :(得分:0)
如果您查看开发人员文档:https://developer.android.com/reference/android/app/Activity.html#findViewById(int)
<强> findViewById 强>
View findViewById (int id)
查找由XML中的id属性标识的视图 在onCreate(Bundle)处理。
Parameters
id int
Returns
查看 视图如果找到,否则为null 。
该警告来自
所以你看到listView
执行后变量listView = (ListView) findViewById(R.id.list);
可能为空。所以你得到了警告!
如何修复
您可以在if条件中提供null检查表达式,如下所示:
if(adapter != null && listView !=null ) {
listView.setAdapter(adapter);
}