2015-05-19 11 views
1

//SampleTabsWithIcons.java如何在選擇各自的標籤欄的

​​

//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); 
    } 
} 

//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(); 
    } 
    } 
} 

跳到片段我的輸出是,

enter image description here

我的問題是,而不是顯示數字,而選擇每個標籤,我想去新的片段活動(即newpage.java)。現在一些數字顯示在每個選項卡上。我如何實現這一點。

我有5類(first.java,second.java,third.java,four.java,five.java)和5的佈局的每個凸片(first.xml ...分別地)

我試圖很多但沒有成功。有人知道答案嗎。

謝謝。

+3

你需要的是跳轉到'Fragment'不'Activity',因爲如果你去一個'Activity'你就失去了標籤欄。 – M090009

+1

@ M090009: - 對不起,我的錯誤。跳轉到片段(即,newpage.java) –

回答

2

好的,你可以自己製作Fragments,然後在getItem(int position)返回它們;例如,你可以有一個數組,你的日曆,提要等,然後在每個位置上返回一個。

//SampleTabsWithIcons.java

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

..... 

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

它完美地工作。謝謝。 –

+1

不客氣,很高興我能提供幫助 – M090009

2

您可以簡單地使用這和選項卡設置爲viewPager ...

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

內部片段尋呼機適配器,你可以這樣做。

@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; 
    }