最近项目中使用了开源项目ViewPager Indicator,当inditator的数据来自网络时报出来找不到viewPager的错误,解决办法如下:
1在布局文件里将indicator的设置为不可见,当网络数据返回时再设置为可见,问题即可解决。核心代码如下:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:background="@color/background" android:orientation="vertical"> <com.viewpagerindicator.TabPageIndicator android:id="@+id/indicator" android:layout_width="fill_parent" android:layout_height="wrap_content" android:visibility="gone" /> <android.support.v4.view.ViewPager android:id="@+id/pager" android:layout_width="fill_parent" android:layout_height="0dp" android:layout_weight="1" /> </LinearLayout>
Intent intent = getIntent(); String title = intent.getStringExtra("title"); setTitle(title); int typeId = intent.getIntExtra("typeId", 1); pager = (ViewPager) findViewById(R.id.pager); indicator= (TabPageIndicator) findViewById(R.id.indicator); final FragmentPagerAdapter adapter = new GoogleMusicAdapter(getSupportFragmentManager(), titleList); pager.setAdapter(adapter); NetDeclaretion.getResourceType = NetDeclaretion.getResourceType.replace("-100", String.valueOf(typeId)); Log.e("资源分类Url",NetDeclaretion.getResourceType); HttpManager.getInstance().sendGet(NetDeclaretion.getResourceType, CatogeryResourceBean.class, new MyResposeListener.OnHttpResultListener() { @Override public void onSucess(BaseBean result) { CatogeryResourceBean catogeryResourceBean = (CatogeryResourceBean) result; for (int i = 0; i < catogeryResourceBean.categorys.size(); i++) { titleList.add(catogeryResourceBean.categorys.get(i).cname); } adapter.notifyDataSetChanged(); indicator.setViewPager(pager); indicator.setVisibility(View.VISIBLE); } public void onFailed(String msg) { } });