java.lang.IllegalStateException:无法将标题视图添加到列表Android

ven*_*enu 2 android listview android-listview

我在我的应用程序中有一个问题,我正在设置标题视图listview动态但是我得到以下错误,我有两个活动,根据我的条件A和B我设置标题视图到listview我在A活动中设置headerview它工作正常但是当一个活动假我的情况并转到B活动那里我的条件是真的然后来一个活动我需要添加标题视图那里我得到错误................我有试图添加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();

    }
Run Code Online (Sandbox Code Playgroud)

错误信息

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)
Run Code Online (Sandbox Code Playgroud)

Raj*_*esh 8

请看一下文档addHeaderView.

特别注意注意事项:

注意:首次引入时,只能在使用setAdapter(ListAdapter)设置适配器之前调用此方法.从KITKAT开始,可以随时调用此方法.如果ListView的适配器没有扩展HeaderViewListAdapter,它将被WrapperListAdapter的支持实例包装.


Ein*_* H. 8

我在这里找到了这个简单的解决方法http://code.neenbedankt.com/note-to-self-listfragment-and-header-views/:

    @Override
    public void onDestroyView() {
      super.onDestroyView();
      setListAdapter(null);
  }
Run Code Online (Sandbox Code Playgroud)

只需将其添加到ListFragment类.
它适用于2.3.3和4.2.2