2011-08-01 29 views
1

我正在尝试使用requestWindowFeature()函数在列表活动上设置自定义标题视图。该方法工作正常,只有子类Activity,但只要我尝试与ListActivity子类相同的方法,它的错误,给我一个NullPointerException异常,当我尝试以编程方式修改标题视图。何时android的ListActivity类调用setContentView()?

我认为问题属于requestWindowFeature()需要在setContentView()之前调用的事实。由于ListActivity负责为您设置内容视图,因此我不知道何时会调用该视图。有没有人有什么建议?谢谢您的帮助。

回答

1

无论何时与列表进行交互,都会调用setContentView,例如在listactivity上调用getList()或setAdapter()。见listactivity

+0

任何想法为什么我的代码给我一个nullpointerexception?这是相关代码的要点。 https://gist.github.com/1118871我做了一个快速检查,requestWindowFeature返回true,所以我的视图应该被加载,不是吗? –

+0

((TextView)findViewById(R.id.title))== null? – MrJre

0

ListActivity对你没有照顾电话 setContentView:你仍然需要自己动手。您的内容视图必须有一个适当名称的 ListView,但您仍然需要自己拨打 setContentView。在拨打 super.onCreate之后拨打 requestWindowFeature,然后拨打 onCreate,然后拨打 setContentView,您应该是金手指。

编辑:我的错误,你是非常正确的(我不知道:我一直只是调用setContentView自定义布局)。

here看来,有没有办法在ListActivitysetContentView调用之前溜requestWindowFeature召唤:super.onCreate呼叫后立即总是调用setContentView。在致电super.onCreate之前,您可以尝试致电requestWindowFeature,但我怀疑这样做效果不佳。

我不认为你将能够使用默认的ListActivity这个:你可能需要使用一个常规的活动和手动做ListView绑定。

+0

这是不正确的。 ListActivity为您提供了一个默认视图,但如果您愿意,您可以用自己的视图覆盖它。 –

0

解决我的问题的source,对于任何的Google,是对ListActivity类的源,也是layout_content.xml文件到自己的应用程序的包,和子从这个而不是Android的ListActivity复制类。然后,我添加了一个onCreate()方法,我设置请求窗口功能和,然后调用setContentView()方法。哈克?大概。作品?是:)

0

有时,requestWindowFeature()会在调用super.onCreate(bundle);后调用NullPointerException。另一个原因是如果您也首先打电话setContentView

super.onCreate(bundle);setContentView必须在所有requestWindowFeature()调用完成后调用。