Исключение нулевого указателя при накачке из XML (без использования TabActivity) - PullRequest
0 голосов
/ 22 декабря 2010

В настоящее время я пытаюсь отладить приложение для Android. Я построил первый экран, и он использует Tab Host. Я сделал несколько небольших изменений в TabHost, чтобы добавить несколько дополнительных методов (полный исходный код) для работы с некоторыми другими частями моего приложения.

Однако, когда я пытаюсь выполнить следующее, я получаю исключение нулевого указателя на Inflate, и оно ничего не говорит мне о том, почему. Я загрузил полный исходный код Android для своего SDK и добавил его в Eclipse, чтобы пройти процесс инфляции и выяснить, могу ли я получить дополнительную информацию об ошибке таким образом.

Я точно обнаружил, какая строка вызывала ошибку (источник указан ниже), но при переходе через отладчик произошло нечто странное. Логика - это случай if / else, где, если == true, он должен возвращать объект New Parser (), я запустил этот код, и он успешно прошел через конструктор Parser, но после возвращения из него следующая инструкция вышла прямо из группа операторов в строке ниже возвращает ноль.

Конструктор, кажется, работает правильно (он расположен в XmlBlock.java на случай, если вам интересно), но он все еще переходит к следующей строке и возвращает ноль, и я понятия не имею, почему это так. Я искал решения, но пока единственная похожая проблема возникла у кого-то, кто использовал TabActivity, который не подходит для моего приложения. Мне нужно, чтобы вкладки и их представления генерировались объектами, которые я определил в своем проекте (аналогично контроллерам представлений в стиле IOS), а не разделяли процессы с помощью Intents для запуска новых операций.

Может кто-нибудь взглянуть на мой источник и сказать, что я делаю здесь неправильно, потому что никто другой не может сказать мне, в чем проблема? Вот еще одна прямая ссылка на источник: http://pastebin.com/9VRE2UGW

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

Хорошо, похоже, моя РЕАЛЬНАЯ проблема в том, что я не искал в перспективе Android DDMS мою информацию об отладке. Первоначально я думал, что перспектива отладки Java даст мне всю необходимую информацию. Настоящая причина этого исключения была в другом месте программы. Теперь, когда я читаю logcat, я смогу решить остальную часть этого самостоятельно, поскольку это была моя настоящая проблема (неадекватная информация).

0 голосов
/ 22 декабря 2010

Я подозреваю, что эта строка неверна:

TabBarController UITabBarController = 
    (TabBarController)interfaceBuilder.inflate(R.layout.tab_bar , null);

Поскольку ваш R.layout.tab_bar представляет TabHost:

<?xml version="1.0" encoding="utf-8"?>
<TabHost
  xmlns:android="http://schemas.android.com/apk/res/android"
  android:layout_width="wrap_content"
  android:layout_height="wrap_content"
  android:id="@android:id/tabhost">
        <RelativeLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">
                <TabWidget
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:id="@android:id/tabs"
                android:layout_alignParentBottom="true" />

                <FrameLayout
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:id="@android:id/tabcontent">
                </FrameLayout>
        </RelativeLayout>
</TabHost>
...