有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我试图将TextView作为参数传递给外部类以执行某些功能,但每次都遇到NullPointerException

活动。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);
}

因此,我知道该视图已在布局中找到。xml,并且它已经初始化,我的问题是如何将视图从活动传递到外部类

谢谢


编辑

忘记列表需要初始化为ArrayList

干杯


共 (2) 个答案

  1. # 1 楼答案

    您的_视图列表未初始化,即您试图将数据写入null。 要解决此问题,您需要编写:

    public List<View> _views = new List<>();
    

    而不仅仅是:

    public List<View> _views;
    

    为了减少头痛,我建议您使用数组列表:

    public ArrayList<View> list = new ArrayList<>();
    

    现在它可以工作了:)

  2. # 2 楼答案

    您的“\u视图”列表未初始化。请看下面的工作

    public List_views=new ArrayList()

    多谢各位