我试图将TextView作为参数传递给外部类来执行某些功能,但我每次都会遇到NullPointerException。
Activity.java
tv = (TextView) findViewById(R.id.tv);
Log.v("", "Contents: " + tv.getText().toString()); // This works fine
externalClass.addViewToList(tv);
externalClass.printViewContents(tv.getText().toString());
外部课程
public List<View> _views;
// This doesn't work
public void addViewToList(View v) {
try {
this._views.add(v);
Log.v("", "Added " + v.getId() + " to list");
}
catch(NullPointerException ex) {
Log.e("", "NullPointerException when adding view to list");
}
}
// But this works fine
public void printViewContents(String contents) {
Log.v("",contents);
}
所以我知道在layout.xml中找到了视图并且它已经被初始化了,我的问题是如何将View从我的Activity传递给外部类。
由于
修改
忘记列表需要作为ArrayList
进行初始化干杯!
答案 0 :(得分:3)
您的_views列表未初始化,即您尝试将数据写入null。 要解决这个问题,你需要写:
public List<View> _views = new List<>();
而不只是:
public List<View> _views;
为了减少头痛,我建议您使用数组列表:
public ArrayList<View> list = new ArrayList<>();
现在它将起作用:)
答案 1 :(得分:1)
您的“_views”列表未初始化。见下面的工作。
public List _views = new ArrayList();
谢谢。