Иногда строка двоичного XML-файла #XX: Ошибка надувания класса <unknown> - PullRequest
4 голосов
/ 08 марта 2011

У меня есть основное занятие, которое содержит главное меню. В этом меню есть возможность начать второе действие, которое является потомком SurfaceView.

Я получаю эту ошибку несколько раз, но не всегда. Мне нужно выполнить процесс вызова второго действия с помощью кнопки меню первого действия, а затем вернуться к первому действию. В конце концов (обычно на 7-м повторении) ошибка происходит, когда 2-й. деятельность запускается. Без отладчика экран телефона становится черным и блокируется на 30 и более секунд, затем я вижу диалоговое окно, чтобы закрыть его. В отладчике приложение останавливается на этом исключении.

Мой файл макета для второго действия:

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

    <com.myapp.MySecActivity
      android:layout_width="fill_parent"
      android:layout_height="fill_parent" android:id="@+id/sec_view"/>

</FrameLayout>

У меня есть класс MySecActivity, который загружает этот макет в конструктор.

Я понял, что получаю InflateException на setContentView. Я проверяю идентификатор, который передаю setContentView, и он одинаков, но не равен нулю, при всех условиях:

int id = getResources().getIdentifier("mylayout", "layout", getPackageName());

if (id<= 0) {
    id= 0;  // just for debugging
} else {
   try {
       setContentView(id);
    } catch (InflateException e) {
       error = true;
    }
}

1 Ответ

3 голосов
/ 14 марта 2011

Вам необходимо иметь прелюдию <?xml .. ?>, а также установить свое пространство имен xml.Вы делаете это?

<?xml version="1.0" encoding="utf-8"?>
<com.myapp.MySecActivity
    xmlns:android="http://schemas.android.com/apk/res/android"
    ...

Если com.myapp.MySecActivity не является вашим корневым элементом, попробуйте вставить весь макет, если вы хотите, чтобы мы посмотрели на него.

...