Android:将TextView作为参数传递给外部函数会返回nullpointerexception

时间:2015-05-12 08:28:47

标签: java android

我试图将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

进行初始化

干杯!

2 个答案:

答案 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();

谢谢。