findViewById(R.id.list_view);返回“null”

时间:2012-04-09 06:36:16

标签: android

我正在尝试展示ListView

我创建了一个activity,在onCreate()方法中我启动了一个AsyncTask,在onPostExecute()方法中,我正在尝试显示ListView。< / p>

listView对象接收空...

以下是代码段。

 protected void onPostExecute(KpiResponseObject kpiReportResponse) {
     ListView listView;
     listView = (ListView) findViewById(R.id.list_view);
}

这里我在listView对象中收到空。

我怀疑这是context问题,但无法确定究竟是什么。

4 个答案:

答案 0 :(得分:2)

您确定setContentView中有onCreate,然后在XML中定义了ListView list_view吗?

答案 1 :(得分:1)

您放在setContentView()中的布局没有任何ID为list_view的视图。

答案 2 :(得分:1)

@brig这几乎是100%的上下文问题。您应该从其中一个覆盖视图调用findViewByID。一个简单的解决方案就是将上下文传递给这个asynctask(我假设这是某种类型的asynctask)。在构造函数中设置一个memeber

private Context mContext;

public myAsync(Context context){
  mContext = context;
}

然后在你打电话

protected void onPostExecute(KpiResponseObject kpiReportResponse) {
     ListView listView;
     listView = (ListView) mContext.findViewById(R.id.list_view);
}

答案 3 :(得分:1)

有两个原因你可能得到null值,一个是没有定义setContentView(xml),第二个是你调用Asynctask的上下文。检查这两件事情。