从XML扩充时的空指针异常(不使用TabActivity)

时间:2010-12-22 05:43:16

标签: android android-widget nullpointerexception android-tabhost

我正在尝试调试我的Android应用。我已经构建了第一个屏幕,它使用的是Tab Host。我对TabHost做了一些小修改,添加了一些额外的方法(完整的源代码),以便与我的应用程序的其他部分一起使用。

然而,当我尝试运行以下内容时,我在Inflate上得到一个空指针异常,它并没有真正告诉我任何有关原因的信息。我为我的SDK下载了完整的Android源代码并将其添加到eclipse中以逐步完成通胀过程,并查找是否可以通过这种方式获取有关错误的更多信息。

我确切地找到了导致错误的行(下面的源代码),但是当单步执行调试器时发生了一些奇怪的事情。逻辑是一个if / else的情况,其中if == true它应该返回一个New Parser()对象,我运行了那个代码并且它成功地逐步通过了Parser的构造函数,但是从那里返回之后,下一个指令就从语句组到下面的行返回null。

构造函数似乎已正常运行(如果你想知道它位于XmlBlock.java中)但它仍​​然步入下一行并返回null,我不知道为什么会这样。我已经搜索了解决方案,但到目前为止,使用TabActivity的人遇到的唯一类似问题不适合我的应用程序。我需要Tabs及其视图由我在项目中定义的对象(类似于IOS样式的View Controllers)生成,而不是通过使用Intents来启动新活动的单独进程。

有人可以看一下我的来源并告诉我这里我做错了什么,因为没有人能告诉我这是什么问题?这是涉及来源的另一个直接链接:http://pastebin.com/9VRE2UGW

2 个答案:

答案 0 :(得分:1)

好吧,看起来我的真正问题在于我没有在Android DDMS视角中查看我的调试信息。我原本以为Java Debug透视图会给我所有必要的信息。这个例外的真正原因是该计划的其他部分。现在我正在阅读logcat,我应该能够自己解决剩下的问题,因为那是我真正的问题(信息不足)。

答案 1 :(得分:0)

我怀疑这条线是错误的:

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>