我有一个声明此TableLayout的XML文件:
<TableLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="5dp" >
<TableRow
android:id="@+id/tableRow1"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</TableRow>
<TableRow
android:id="@+id/tableRow2"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/text" />
</TableRow>
</TableLayout>
然后在我的片段onCreateView中,我通过Id找到它:
TableRow row1 = (TableRow) view.findViewById(R.id.tableRow1);
TableRow row2 = (TableRow) view.findViewById(R.id.tableRow2);
然后在onClick的一些观点中,我尝试这样做:
TextView nameView = new TextView(getActivity());
//sets the column to skip the first one
nameView.setLayoutParams(new TableRow.LayoutParams(i + 1));
nameView.setText(materialNames[i]);
row1.addView(nameView);
并且无缘无故地抛出nullpointer。我使用这个完全相同的方法从我的XML中查找其他视图,它工作正常,但由于某种原因,它认为那些TableRows是null。我试过打扫这个项目。知道为什么这不起作用吗?
答案 0 :(得分:0)
我的朋友找到了解决这个问题的方法。 row1和row2变量首先在我的片段中声明为全局变量。然后在onCreateView中,而不是实际初始化它们,我在onCreateView方法中创建了新的局部变量,其名称与全局变量相同。这非常难以找到,并且修复如下:
row1 = (TableRow) view.findViewById(R.id.tableRow1);
row2 = (TableRow) view.findViewById(R.id.tableRow2);
我为浪费你的时间道歉。