【发布时间】:2013-12-20 09:56:05
【问题描述】:
我的应用程序中有一个问题,我正在将标题视图动态设置为 listview,但出现以下错误,我有两个活动,A 和 B 根据我的情况我正在将标题视图设置为 listview在 A 活动中设置 headerview 它工作正常但是当 A 活动错误我的条件并转到 B 活动时我的条件为真然后来到 A 活动我需要在那里添加标题视图我得到错误............ .......我尝试添加 onStart(), onResume() 方法,但仍然遇到同样的错误.....如何解决它
Java 代码
on Strat()
{
if (mDrawerList.getHeaderViewsCount()<1) {
TextView headerText = new TextView(mContext);
headerText.setGravity(Gravity.CENTER);
headerText.setTextColor(getResources().getColor(R.color.white_color));
headerText.setPadding(20, 12, 20, 12);
headerText.setTextSize(18);
headerText.setText(mSessionManager.getUserName());
mDrawerList.addHeaderView(headerText);
}
adapter = new NavDrawerListAdapter(mContext, navDrawerItems);
mDrawerList.setDividerHeight(2);
mDrawerList.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
错误信息
2-20 15:15:34.799: E/AndroidRuntime(13111): FATAL EXCEPTION: main
12-20 15:15:34.799: E/AndroidRuntime(13111): java.lang.RuntimeException: Unable to resume activity {com.examle.EventListActivity}: java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2790)
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2819)
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1298)
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.os.Handler.dispatchMessage(Handler.java:99)
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.os.Looper.loop(Looper.java:137)
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.app.ActivityThread.main(ActivityThread.java:5103)
12-20 15:15:34.799: E/AndroidRuntime(13111): at java.lang.reflect.Method.invokeNative(Native Method)
12-20 15:15:34.799: E/AndroidRuntime(13111): at java.lang.reflect.Method.invoke(Method.java:525)
12-20 15:15:34.799: E/AndroidRuntime(13111): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
12-20 15:15:34.799: E/AndroidRuntime(13111): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-20 15:15:34.799: E/AndroidRuntime(13111): at dalvik.system.NativeStart.main(Native Method)
12-20 15:15:34.799: E/AndroidRuntime(13111): Caused by: java.lang.IllegalStateException: Cannot add header view to list -- setAdapter has already been called.
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.widget.ListView.addHeaderView(ListView.java:258)
12-20 15:15:34.799: E/AndroidRuntime(13111): at android.widget.ListView.addHeaderView(ListView.java:287)
【问题讨论】:
-
Cannot add header view to list -- setAdapter has already been called.意思是......好吧,你必须先添加标题然后 setAdapter 才能查看;] -
在设置适配器之前,我正在添加标题视图
-
好像没有。您可能正在访问已设置的
ListView。向我们展示更多相关代码。 -
当你从 Activity B 回到 A 时,你是在重启 Activity A 吗?如果不是,那么它与您面临的实例相同,并且存在的列表视图已经有一个适配器集
-
在stackoverflow.com/a/31181366/4489494这里试试我的回答希望这对你有帮助..
标签: android listview android-listview