【发布时间】:2013-02-21 15:12:07
【问题描述】:
首先,让我解释一下我的代码: 当用户单击按钮时,将执行以下代码:
mMyListView.removeFooterView(mMyFooterView);
mMyListView.setAdapter(null);
//Fetch some data in an AsyncTask
Async 完成后,将执行以下代码:
if (mMyList.size() > 0){
mMyListView.addFooterView(mMyFooterView);
}
MyListAdapter myListAdapter = new MyListAdapter(this, mMyList);
mMyListView.setAdapter(myListAdapter);
这就是问题所在。因为在某些设备上,我在这一行收到 NullPointerException:
mMyListView.addFooterView(mMyFooterView);
这是 StackTrace:
java.lang.NullPointerException
at android.widget.AdapterView$AdapterDataSetObserver.onChanged(AdapterView.java:778)
at android.widget.ListView.addFooterView(ListView.java:387)
at android.widget.ListView.addFooterView(ListView.java:402)
at com.augustinianum.augustinianum.ManualCheckActivity.showScheduleChanges(ManualCheckActivity.java:84)
at com.augustinianum.augustinianum.ManualCheckActivity.access$1(ManualCheckActivity.java:81)
at com.augustinianum.augustinianum.ManualCheckActivity$CheckScheduleChange.onPostExecute(ManualCheckActivity.java:192)
at com.augustinianum.augustinianum.ManualCheckActivity$CheckScheduleChange.onPostExecute(ManualCheckActivity.java:1)
at android.os.AsyncTask.finish(AsyncTask.java:417)
at android.os.AsyncTask.access$300(AsyncTask.java:127)
at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:429)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:130)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)
at dalvik.system.NativeStart.main(Native Method)
奇怪的是,当用户第二次点击获取数据的按钮时,我才得到这个异常。第一次一切顺利:显示 listView 并添加页脚。但是第二次,我在某些设备上遇到了这个异常。
有谁知道如何解决这个问题?
【问题讨论】:
-
已全局声明mMyListView并在onCreate..上初始化它?
-
@Pragnani 是的,我在我的类块中定义了它,并使用 findViewById() 将其填充到 onCreate() 中。
-
以下细节很难追查问题,如果你添加一些代码会有所帮助。
-
@Pragnani 好吧,我的代码很长,所以我认为在这里粘贴我的整个代码不是一个好主意。如果您需要我的代码的额外部分,请询问。
-
@Sam 最低 API 级别为 3。它崩溃的设备运行 Android 2.3。
标签: java android listview nullpointerexception footer