java.lang.NullPointerException:尝试调用虚方法' android.view.View android.widget.TableRow.getChildAt(int)

时间:2015-11-25 13:30:02

标签: android tablerow

您好,对不起我的英语技能=)

我在Android Studio中编写了一些计算程序并遇到了问题。

我已在TableLayout中动态创建TableRow,如下所示:

    TableLayout table2 = (TableLayout) findViewById(R.id.table2);
    TableRow.LayoutParams rowParams = new TableRow.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.WRAP_CONTENT, Gravity.CENTER_HORIZONTAL);

    TableRow row = new TableRow(this);
    row.setLayoutParams(rowParams);

    row.addView(floor2);
    row.addView(ps2table);
    row.addView(gsatable);
    row.addView(vitable);
    table2.addView(row);

其中floor2,ps2table,gsatable和vitable - 是按下按钮后计算的TextView。

在表创建之后,我尝试使用其中一个数字(TableLayout的最后一行和2位的子项):

    int gsn_count = table2.getChildCount();
    TableRow gsnRow = (TableRow) table2.getChildAt(gsn_count);
    TextView tGsn = (TextView) gsnRow.getChildAt(2);

我的问题是,当我尝试从此TableLayout的任何TableRow中获取一个或另一个数字(double)的值时,我收到此错误:

java.lang.NullPointerException: Attempt to invoke virtual method 'android.view.View android.widget.TableRow.getChildAt(int)' on a null object reference

这是找我,因为我没有我所指的数字,但它在那里。我将在下面的链接中添加带有评论和所有代码的图片。

图片:http://i.imgur.com/huI4kba.png

我遇到错误的方法的代码:http://pastebin.com/nDPnbHNR

谢谢!

1 个答案:

答案 0 :(得分:1)

试试吧:

int gsn_count = table2.getChildCount();
TableRow gsnRow = (TableRow) table2.getChildAt(gsn_count -1);

getChildAt()获取一个索引(从0开始),getChildCount()返回子计数。

因此,如果您有2个项目,则最大索引为1,计数为2。