解决Android: java.lang.IllegalStateException: ViewPager does not have

那句错误的是重要的提示,大概意思是:确保适配器的内容不是从子线程中更改,而是从UI线程中更改。至此大概发现了出现该错误的原因是在Activity的onCreate()方法创建的时候是通过AsyncTask来绑定数据到Adapter中,最后再执行 

listView.setAdapter(Adapter)。

意思大体是,你的adapter的内容变化了,但是你的ViewPager并不知情。请保证你adapter的数据在主线程中进行更改!

前:private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(adapter==null){
adapter = new NewsAdapter(getActivity().getSupportFragmentManager(),data);

vp_news.setAdapter(adapter);
}else{
adapter.notifyDataSetChanged();
}
tpi_indicator.setViewPager(vp_news);
tpi_indicator.setVisibility(View.VISIBLE);
};
};

改为以下就可以了:private Handler handler = new Handler(){
public void handleMessage(android.os.Message msg) {
if(adapter==null){
adapter = new NewsAdapter(getActivity().getSupportFragmentManager(),data);
}else{
adapter.notifyDataSetChanged();
}
vp_news.setAdapter(adapter);
Log.d("aa", "adapter:====>"+adapter);
Log.d("aa", "vp_news:====>"+vp_news);
Log.d("aa", "tpi_indicator:====>"+tpi_indicator);
Log.d("aa", "adapter.getPageTitle(0):=====>"+adapter.getPageTitle(0));
tpi_indicator.setViewPager(vp_news);
tpi_indicator.setVisibility(View.VISIBLE);
};
};

你可能感兴趣的:(android)