所以我试图在我的java应用程序中用更多行来扩充TableLayout
。
以下是我目前正在运行的代码:
LayoutInflater inflater = getLayoutInflater();
View layout = inflater.inflate(R.layout.toast_layout, (ViewGroup) findViewById(R.id.toast_layout_root));
//The part that fails
TableLayout table = (TableLayout) findViewById(R.id.toastTable);
View row = getLayoutInflater().inflate(R.layout.toast_table_layout_row, (ViewGroup) findViewById(R.id.toast_row));
table.addView(row);
Toast toast = new Toast(getApplicationContext());
toast.setGravity(Gravity.CENTER_VERTICAL, 0 ,0);
toast.setDuration(Toast.LENGTH_LONG);
toast.setView(layout);
toast.show();
这是我的xml文件:
toast_layout:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/toast_layout_root"
android:orientation="horizontal"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:padding="8dp"
android:background="#c3484848">
<TableLayout
android:id="@+id/toastTable"
android:layout_width="fill_parent"
android:layout_height="wrap_content">
<TableRow
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<TextView
android:tag="toast_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".50"
android:text="Kultuur"
android:textAllCaps="true"/>
<TextView
android:tag="toast_params"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".50"
android:text="1000 tera mass g"
android:textAllCaps="true"/>
</TableRow>
</TableLayout>
</RelativeLayout>
toast_table_layout:
<?xml version="1.0" encoding="utf-8"?>
<TableRow xmlns:android="http://schemas.android.com/apk/res/android"
android:tag="toast_row"
android:id="@+id/toast_row"
android:layout_height="wrap_content"
android:layout_width="wrap_content" >
<TextView
android:tag="toast_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".50"
android:text="Kultuur"
android:textAllCaps="true"/>
<TextView
android:tag="toast_params"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight=".50"
android:text="1000 tera mass g"
android:textAllCaps="true"/>
</TableRow>
我的想法是,我想在现有的TableLayout
中添加更多行
如果我删除了使用//The part that fails
注释的代码,那么我会看到一个显示TableLayout
并带有一点文字的吐司。
但是添加更多行会因NullPointException而失败。
我不确定应该如何正确完成。最终结果应该是我在循环中添加这些行,并通过他们拥有的标记获取TextField
将其TextField
文本更改为其他内容。
答案 0 :(得分:1)
您已从膨胀的视图调用findViewById(),因为您的toastTable位于toast_layout_root中。只是改变
TableLayout table = (TableLayout) findViewById(R.id.toastTable);
到
TableLayout table = (TableLayout)layout.findViewById(R.id.toastTable);