使用ViewPager和TextView发生奇怪的IllegalStateException

时间:2014-08-08 15:32:34

标签: android android-viewpager textview illegalstateexception android-pageradapter

我的应用程序出现了一个奇怪的崩溃。

在我的布局上,我有一个独立于我的viewPager的TextView,它具有属性android:layout_below,因此,TextView的父级是一个ID为 rl 的RelativeLayout,以及ViewPager :

enter image description here

现在,当我更改ViewPager的适配器时,我正在同时更改TextView的文本,并得到以下IllegalStateException

    ChiamataPOST chiamata = new ChiamataPOST(WSEntity); // My AsyncTask
    chiamata.execute(WS); // I execute it

    cittaSceltaTV.setText("whatever text"); // and I change my textView, I've tried to do it before and after the AsyncTask.
  

java.lang.IllegalStateException:应用程序的PagerAdapter在不调用PagerAdapter#notifyDataSetChanged的情况下更改了适配器的内容!预期的适配器项目数:4,找到:0

但如果我评论TextView的setText()的功能,它就能完美运行。

这有点奇怪吗?我错了吗?

提前致谢。

1 个答案:

答案 0 :(得分:3)

在调用文本视图上的setText()之前,在PageAdapter上调用notifyDataSetChanged()。如下所示

notifyDataSetChanged();
cittaSceltaTV.setText("whatever text"); 

我相信一旦你调用setText()调用它就会尝试更新列表并抛出IllegalStateException,因为它注意到预期项目数与实际项目数之间的差异。见下文。

 Expected adapter item count: 4, found: 0