Предупреждение от Eclipse и android.view.Исключение InflateException во время выполнения

#android #android-layout #android-xml

#Android #android-layout #android-xml

Вопрос:

Я получал случайные сообщения об исключениях от своих пользователей при раздувании макета:

android.view.InflateException: строка двоичного XML-файла # 2: ошибка при раздувании класса com.MyClass

Это случается редко, и я никогда не видел этого сам … до сих пор. Внезапно я получаю это исключение каждый раз, используя точно такой же макет, который я использовал все это время:

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical" >

    <com.comet.android.keyboard.CandidateView
        android:id="@ id/candidate"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content" >
    </com.comet.android.keyboard.CandidateView>

    <include layout="@layout/keyboard_view" />

</LinearLayout>
  

Кроме того, Eclipse всегда сообщал об этом предупреждении в строке # 1:

Для документа не обнаружено грамматических ограничений (DTD или XML-схемы).

Есть идеи о том, почему я получу предупреждение в строке # 1 и исключение в строке # 2? Связаны ли эти два? Этот файл работал до сегодняшнего дня, и я не менял его!

Я заметил, что URL-адрес пространства именhttp://schemas.android.com/apk/res/android не устраняется. Может ли это быть? Это тот же URL, который используется во всех примерах Android.

Ответ №1:

Предупреждение безвредно. Если вы хотите избавиться от этого, посмотрите здесь http://code.google.com/p/android/issues/detail?id=9831

Ошибка странная … не могли бы вы опубликовать код, который вы используете для расширения макета? Также есть ли у вас класс с именем com.MyClass ?

Комментарии:

1. Ошибка исчезла после того, как я полностью очистил все свои проекты и переустановил приложение с нуля. Однако я получал отчеты из поля того же исключения. Вот строка, которая раздувает макет выше: mKeyboardLayout = (View)getLayoutInflater().inflate(R.layout. keyboard_layout, null); Это довольно просто. «com. MyClass» должен был быть заполнителем для фактического имени класса, но это ошибка с моей стороны. Исключение просто говорит «… ошибка раздувания класса» и не упоминает никакого имени класса.