我的应用程序出现了一个奇怪的崩溃。
在我的布局上,我有一个独立于我的viewPager的TextView,它具有属性android:layout_below
,因此,TextView的父级是一个ID为 rl 的RelativeLayout,以及ViewPager :
现在,当我更改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()
的功能,它就能完美运行。
这有点奇怪吗?我错了吗?
提前致谢。
答案 0 :(得分:3)
在调用文本视图上的setText()之前,在PageAdapter上调用notifyDataSetChanged()。如下所示
notifyDataSetChanged();
cittaSceltaTV.setText("whatever text");
我相信一旦你调用setText()调用它就会尝试更新列表并抛出IllegalStateException,因为它注意到预期项目数与实际项目数之间的差异。见下文。
Expected adapter item count: 4, found: 0