我重新安排了动态创建窗口小部件/视图的代码,虽然xml布局似乎是“格式良好”(它编译),但当我到达相应的“setContentView()”时,它会崩溃。
IOW:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.ondemandandautomatic_dynamicauthorize); <-- crashes when I F6 (Eclipse) on this line
...所以我在我的xml布局文件中注意到一个警告图标:“这个TableLayout没用(没有孩子,没有背景,没有id)”
好吧,我打算在运行时添加孩子;为什么需要背景?还有一个大问题:当我添加一个时,它为什么说它没有id:
<TableLayout>
android:id="@id/tlDynamicRows" <-- IT'S RIGHT THERE!!!
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TableLayout>
还有另一个警告说:“这个TableRow或它的TableRow父母是没用的”
这是整个xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/tlDynamic"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow> <- This is where it says, "This TableRow or its TableRow parent is useless"
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/demand"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/time"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/space"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/contact"
android:textAppearance="?android:attr/textAppearanceMedium" />
</TableRow>
</TableLayout>
<ScrollView
android:id="@+id/scrollViewHost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<TableLayout> <- This is where it says, "says, "This TableRow or its TableRow parent is useless"
android:id="@id/tlDynamicRows"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TableLayout>
</ScrollView>
</LinearLayout>
什么可能导致这种令人反感的发展?
更新:
查看帖子时,我看到xml中的最终“TableLayout”有一个多余的直角括号。所以,我拿出了第一个,现在我得到一个错误的消息,即“没有找到与给定名称匹配的资源(在'id'处,值为'@ id / tlDynamicRows')。”
xml的那部分现在是:
<TableLayout
android:id="@id/tlDynamicRows"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TableLayout>
是什么给出了?
更新
这是最终有效的xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<TableLayout
android:id="@+id/tlDynamic"
android:layout_width="match_parent"
android:layout_height="match_parent" >
<TableRow
android:layout_width="match_parent"
android:layout_height="wrap_content" >
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/demand"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/time"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/space"
android:textAppearance="?android:attr/textAppearanceSmall" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_margin="2dip"
android:text="@string/contact"
android:textAppearance="?android:attr/textAppearanceMedium" />
</TableRow>
</TableLayout>
<ScrollView
android:id="@+id/scrollViewHost"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true" >
<TableLayout
android:id="@+id/tlDynamicRows"
android:layout_width="match_parent"
android:layout_height="match_parent" >
</TableLayout>
</ScrollView>
</LinearLayout>
我仍然有一条警告消息要在ScrollView中的TableLayout中更改此行:
android:layout_height="wrap_content"
为:
android:layout_height="wrap_content"
我做了,它似乎没有任何区别 - 但它摆脱了警告,所以我会离开它。
答案 0 :(得分:1)
这可能会发生,因为您只有一个TableRow,尝试添加更多行以查看是否仍然存在。
参考文献:
答案 1 :(得分:1)
您在上面发布的XML中有几点需要注意:
1-当您使用第一个表行
时 <TableRow> <- This is where it says, "This TableRow or its TableRow parent is useless"
在这一行中,您没有指定行的layout_height和layout_width属性,这就是您在警告中“无用”的原因。
2-另一点是尝试在按钮的滚动视图中为表格布局提供id为:
android:id="@+id/tlDynamicRows"
而不是
android:id="@id/tlDynamicRows"
希望这些对你有用。