android的ListActivity类何时调用setContentView()?

时间:2011-08-01 19:38:51

标签: java android listactivity

我正在尝试使用requestWindowFeature()函数在列表活动上设置自定义标题视图。该方法适用于只有子类Activity的视图,但每当我尝试使用ListActivity子类的相同方法时,它都会出错,当我尝试以编程方式修改标题视图时,会给我一个NullPointerException。 / p>

我认为问题与requestWindowFeature()之前需要调用setContentView()的事实有关。因为ListActivity负责为您设置内容视图,所以我不知道何时调用它。有没有人有什么建议?谢谢你的帮助。

4 个答案:

答案 0 :(得分:1)

每当您与List交互时都会调用setContentView,例如在listactivity上调用getList()或setAdapter()。请参阅listactivity的source

答案 1 :(得分:0)

ListActivity不会为您调用setContentView:您仍然需要自己动手。您的内容视图必须具有适当命名的ListView,但您仍需要自己致电setContentView。只需在requestWindowFeature super.onCreate之后拨打onCreate,然后在setContentView之后拨打setContentView,您应该是金色的。

编辑:我的错误,你是对的(我不知道:我总是用自定义布局调用requestWindowFeature)。

here开始,在setContentView的{​​{1}}来电之前无法拨打ListActivity来电:它始终会在setContentView之后立即拨打电话super.onCreate requestWindowFeature来电。您可以在致电super.onCreate之前尝试拨打ListActivity,但我怀疑这样做不会更好。

我认为您无法使用默认的{{1}}:您可能需要使用常规活动并手动执行ListView绑定。

答案 2 :(得分:0)

对于任何googlers来说,我的问题的解决方案是将ListActivity类的源代码以及layout_content.xml文件复制到我自己的应用程序包中,并从中复制子类而不是Android {{1 } .class。然后我在这个类中添加了ListActivity方法,我在其中设置请求窗口功能,然后然后调用onCreate()方法。哈克?大概。作品?是的:)

答案 3 :(得分:0)

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

在完成所有super.onCreate(bundle);次呼叫后,必须先调用{p> setContentViewrequestWindowFeature()