Java 如何在选择相应的选项卡栏时跳转到片段

Java 如何在选择相应的选项卡栏时跳转到片段,java,android,android-actionbar,tabbar,viewpagerindicator,Java,Android,Android Actionbar,Tabbar,Viewpagerindicator,//SampleTabsWithIcons.java public class SampleTabsWithIcons extends FragmentActivity { private static final int[] ICONS = new int[] { R.drawable.events, R.drawable.rss, R.drawable.user, R.drawable.bell, R.d

//SampleTabsWithIcons.java

public class SampleTabsWithIcons extends FragmentActivity {
    private static final int[] ICONS = new int[] {
        R.drawable.events,
        R.drawable.rss,
        R.drawable.user,
        R.drawable.bell,
        R.drawable.search
};

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    this.requestWindowFeature(Window.FEATURE_NO_TITLE);

    setContentView(R.layout.simple_tabs);

    FragmentPagerAdapter adapter = new GoogleMusicAdapter(getSupportFragmentManager());

    ViewPager pager = (ViewPager)findViewById(R.id.pager);
    pager.setAdapter(adapter);

    TabPageIndicator indicator = (TabPageIndicator)findViewById(R.id.indicator);
    indicator.setViewPager(pager);
}

class GoogleMusicAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
    public GoogleMusicAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {
        return TestFragment.newInstance(ICONS[position % ICONS.length]);
    }

    @Override public int getIconResId(int index) {
      return ICONS[index];
    }

  @Override
    public int getCount() {
      return ICONS.length;
    }
  }
}
//TestFragment.java

public final class TestFragment extends Fragment {
private static final String KEY_CONTENT = "TestFragment:Content";

public static TestFragment newInstance(int icons) {
    TestFragment fragment = new TestFragment();

    StringBuilder builder = new StringBuilder();
    for (int i = 0; i < 20; i++) {
        builder.append(icons).append(" ");
    }
    builder.deleteCharAt(builder.length() - 1);
    fragment.mContent = builder.toString();

    return fragment;
}

private String mContent = "???";

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    if ((savedInstanceState != null) && savedInstanceState.containsKey(KEY_CONTENT)) {
        mContent = savedInstanceState.getString(KEY_CONTENT);
    }
}

@SuppressWarnings("deprecation")
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    TextView text = new TextView(getActivity());
    text.setGravity(Gravity.CENTER);
    text.setText(mContent);
    text.setTextSize(20 * getResources().getDisplayMetrics().density);
    text.setPadding(20, 20, 20, 20);

    LinearLayout layout = new LinearLayout(getActivity());
    layout.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT));
    layout.setGravity(Gravity.CENTER);
    layout.addView(text);

    return layout;
}

@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    outState.putString(KEY_CONTENT, mContent);
   }
}
public final类TestFragment扩展了片段{
私有静态最终字符串KEY\u CONTENT=“TestFragment:CONTENT”;
公共静态测试片段newInstance(int图标){
TestFragment fragment=新的TestFragment();
StringBuilder=新的StringBuilder();
对于(int i=0;i<20;i++){
builder.append(图标)。append(“”);
}
builder.deleteCharAt(builder.length()-1);
fragment.mContent=builder.toString();
返回片段;
}
私有字符串mContent=“???”;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
if((savedInstanceState!=null)&&savedInstanceState.containsKey(键内容)){
mContent=savedInstanceState.getString(键内容);
}
}
@抑制警告(“弃用”)
@凌驾
CreateView上的公共视图(布局、充气机、视图组容器、捆绑包保存状态){
TextView text=新的TextView(getActivity());
text.setGravity(Gravity.CENTER);
text.setText(mContent);
text.setTextSize(20*getResources().getDisplayMetrics().density);
设置填充(20,20,20,20);
LinearLayout布局=新的LinearLayout(getActivity());
layout.setLayoutParams(新的LayoutParams(LayoutParams.FILL_父级,LayoutParams.FILL_父级));
布局。设置重力(重心);
布局。添加视图(文本);
返回布局;
}
@凌驾
SaveInstanceState上的公共无效(束超出状态){
super.onSaveInstanceState(超出状态);
outState.putString(KEY_CONTENT,mContent);
}
}
//TestFragmentAdapter.java

class TestFragmentAdapter extends FragmentPagerAdapter implements IconPagerAdapter {
private static final int[] ICONS = new int[] {
    R.drawable.events,
    R.drawable.rss,
    R.drawable.user,
    R.drawable.bell,
    R.drawable.search
};

private int mCount = ICONS.length;

public TestFragmentAdapter(FragmentManager fm) {
    super(fm);
}

@Override
public Fragment getItem(int position) {
    return TestFragment.newInstance(ICONS[position % ICONS.length]);
}

@Override
public int getCount() {
    return mCount;
}

@Override
public int getIconResId(int index) {
  return ICONS[index % ICONS.length];
}

public void setCount(int count) {
    if (count > 0 && count <= 10) {
        mCount = count;
        notifyDataSetChanged();
    }
  }
}
类TestFragmentAdapter扩展FragmentPagerAdapter实现IConPageAdapter{
私有静态最终int[]图标=新int[]{
R.drawable.events,
R.drawable.rss,
R.drawable.user,
R.drawable.bell,
R.drawable.search
};
private int mCount=ICONS.length;
公共TestFragmentAdapter(FragmentManager fm){
超级(fm);
}
@凌驾
公共片段getItem(int位置){
返回TestFragment.newInstance(图标[位置%ICONS.length]);
}
@凌驾
public int getCount(){
返回mCount;
}
@凌驾
公共整数getIconResId(整数索引){
返回图标[索引%ICONS.length];
}
公共无效集合计数(整数计数){

如果(count>0&&countOk,您可以创建自己的
片段
,然后在
getItem(int位置)
中返回它们;例如,您可以拥有一个
片段的数组
日历、提要等。然后在每个位置返回一个

//SampleTabsWithIcons.java

Fragment[] tabFragments = new Fragment[] {CalendarFragment.newInstance(), 
                                           FeedFragment.newInstance()}

.....

@Override
public Fragment getItem(int position) {
    return tabFragments[position];
}

您可以简单地使用它并将选项卡设置为viewPager

@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
    viewPager.setCurrentItem(tab.getPosition());
}

在fragment寻呼机适配器中,您可以这样做

@Override
        public Fragment getItem(int position) {

            switch (position) {
            case 0:

                frag = UsageRecoSummaryFragemrent.newInstance(position);
                // changeColor(newColor);

                break;
内部碎片

 public static UsageRecoSummaryFragemrent newInstance(int position) {
        UsageRecoSummaryFragemrent f = new UsageRecoSummaryFragemrent();
        Bundle b = new Bundle();
        b.putInt(ARG_POSITION, 0);
        f.setArguments(b);

        return f;
    }

您需要的是跳转到
片段
而不是
活动
,因为如果您转到
活动
将丢失选项卡栏。@M090009:-对不起,我的错误。跳转到片段(即newpage.java)