您好,对不起我的英语技能=)
我在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
谢谢!
答案 0 :(得分:1)
试试吧:
int gsn_count = table2.getChildCount();
TableRow gsnRow = (TableRow) table2.getChildAt(gsn_count -1);
getChildAt()获取一个索引(从0开始),getChildCount()返回子计数。
因此,如果您有2个项目,则最大索引为1,计数为2。