Почему компилятор говорит, что я не даю свой идентификатор TableLayout, когда я? - PullRequest
0 голосов
/ 14 марта 2012

Я переставил свой код, который динамически создает виджеты / представления, и, хотя макет 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 бесполезен (без детей, без фона, без идентификатора)»

Ну, я собираюсь добавить детей во время выполнения; зачем нужен фон? И большой вопрос: почему он говорит, что у него нет идентификатора, когда я добавил его:

<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>

Что может быть причиной этого отвратительного развития?

Обновлен:

Просматривая мой пост, я увидел, что последний "TableLayout" в xml имеет лишнюю правую угловую скобку. Итак, я взял первый, и теперь я получаю сообщение об ошибке, а именно: «Не найдено ни одного ресурса, соответствующего данному имени (в« 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>

У меня все еще было предупреждение об изменении этой строки в TableLayout внутри ScrollView:

android:layout_height="wrap_content"

до:

android:layout_height="wrap_content"

Я так и сделал, и казалось, что это ничего не меняет - но оно избавилось от Предупреждения, поэтому я оставлю это.

Ответы [ 2 ]

1 голос
/ 14 марта 2012

Есть несколько моментов, которые следует отметить в XML, который вы разместили выше:

1- Когда вы используете первую строку таблицы

  <TableRow> <- This is where it says, "This TableRow or its TableRow parent is useless"

В этой строке вы не указываетеАтрибуты layout_height и layout_width строки, поэтому вы получаете «бесполезный» в предупреждении.

2- Другой момент - попробуйте присвоить id для Table Layout в представлении прокрутки в нижней части как:

 android:id="@+id/tlDynamicRows"

вместо

 android:id="@id/tlDynamicRows"

надеюсь, что это сработает для вас.

...