首页 > 代码库 > TabHost和ViewPager结合第一个页面不显示
TabHost和ViewPager结合第一个页面不显示
============问题描述============
我使用TabHost和ViewPager想实现滑动切换的效果,但一打开程序,ViewPager的第一个页面是不会显示的(空白),只有点击了其他Tab,再点回第一个Tab,才会显示ViewPager的第一个页面,我在一开始已经用了mViewPager.setCurrentItem(0)指令,但还是无效,请哪位大侠指点一下!!!
package com.product.shiningbaby.fragment;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentStatePagerAdapter;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.TabHost;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TabWidget;
import android.widget.TextView;
import com.product.shiningbaby.R;
public class FragmentImage extends Fragment {
private TabHost mTabHost;
//private TabWidget mTabWidget;
private ViewPager mViewPager;
private PagerAdapter mPagerAdapter;
private String[] tags={"最热","最新","动态"};
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View root= inflater.inflate(R.layout.fragment_image, container,false);
mViewPager=(ViewPager)root.findViewById(R.id.viewpager1);
mPagerAdapter=new SlidePagerAdapter(getFragmentManager());
mViewPager.setAdapter(mPagerAdapter);
mViewPager.setCurrentItem(0);
mTabHost=(TabHost)root.findViewById(android.R.id.tabhost);
mTabHost.setup();
mTabHost.addTab(mTabHost.newTabSpec("tab1").setIndicator(tags[0]).setContent(R.id.viewpager1));
mTabHost.addTab(mTabHost.newTabSpec("tab2").setIndicator(tags[1]).setContent(R.id.viewpager1));
mTabHost.addTab(mTabHost.newTabSpec("tab3").setIndicator(tags[2]).setContent(R.id.viewpager1));
mTabHost.setOnTabChangedListener(new OnTabChangeListener()
{
//第一次打开程序,TabChange时间不会发生,只有点击后才会发生
@Override
public void onTabChanged(String tabId)
{
mViewPager.setCurrentItem(mTabHost.getCurrentTab());
Log.d("myfather","currentTab is: "+mTabHost.getCurrentTab());
}
});
mViewPager.setOnPageChangeListener(new OnPageChangeListener()
{
@Override
public void onPageSelected(int index)
{
mTabHost.setCurrentTab(index);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2)
{
}
@Override
public void onPageScrollStateChanged(int arg0)
{
}
});
return root;
}
@Override
public void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
}
private class SlidePagerAdapter extends FragmentStatePagerAdapter
{
public SlidePagerAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position)
{
return SlideFragment.create(tags[position]);
}
@Override
public int getCount()
{
return tags.length;
}
}
public static class SlideFragment extends Fragment
{
public static SlideFragment create(String tag)
{
SlideFragment f=new SlideFragment();
Bundle b=new Bundle();
b.putString("tag", tag);
f.setArguments(b);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater,ViewGroup container,Bundle savedInstanceState)
{
View v=inflater.inflate(R.layout.fragment_image_newest, container,false);
TextView t=(TextView)v.findViewById(R.id.text1);
t.setText(getArguments().getString("tag"));
return v;
}
}
}
============解决方案1============
这个确实不显示,找半天也没找到原因,最后的方法时先将其设到1然后到0
在你的代码中就变成
mViewPager.setCurrentItem(1);
mViewPager.setCurrentItem(0);
TabHost和ViewPager结合第一个页面不显示
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。