0

我正在尝试显示ListView.

我已经创建了一个activity,在onCreate()方法中我正在启动一个AsyncTask,在onPostExecute()方法中我正在尝试ListView在其中显示。

listView对象接收空..

下面是代码片段。

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

listView在这里,我在对象中收到 null 。

我怀疑这是context问题所在,但无法弄清楚它到底是什么。

4

4 回答 4

2

你确定你有setContentView你的onCreate,然后有一个ListView list_view在 XML 中定义的?

于 2012-04-09T06:40:05.040 回答
1

您放入的布局setContentView()没有任何 id 为list_view.

于 2012-04-09T06:39:14.620 回答
1

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

private Context mContext;

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

然后在你打电话

protected void onPostExecute(KpiResponseObject kpiReportResponse) {
     ListView listView;
     listView = (ListView) mContext.findViewById(R.id.list_view);
}
于 2012-04-09T06:40:16.620 回答
1

您可能会得到空值有两个原因,一个是未定义 setContentView(xml),第二个是您调用 Asynctask 的上下文。检查这两个你想要的东西。

于 2012-04-09T06:46:45.260 回答