在片段抓住TabText [英] Grab TabText in Fragment
问题描述
我有一个包含11片和1个片段的动作条。我也有一个ViewPager显示片段(S)。当标签被点击它会创建相同的片段。这些选项卡显示日期,使他们每天都换。我需要的是发送标签的文字(即.getTabText())的片段,这将改变片段的内容。我有这么大的麻烦试图找出如何做到这一点。这是我所有的code:
公共类MainActivity扩展FragmentActivity工具
ActionBar.TabListener {
私人ViewPager viewPager;
私人TabsPagerAdapter mAdapter;
私人ActionBar的动作条;
私人的ArrayList< TopRatedFragment> myFragmentList =新的ArrayList< TopRatedFragment>();
//标签标题
的String []选项卡= {this.getCurrentDate(-5).toString(),this.getCurrentDate(-4).toString(),this.getCurrentDate(-3).toString(), this.getCurrentDate(-2)的ToString(),this.getCurrentDate(-1)的ToString(),
this.getCurrentDate(0)的ToString(),
this.getCurrentDate(1)的ToString(),this.getCurrentDate(2)的ToString(),this.getCurrentDate(3)的ToString(),this.getCurrentDate(4)的ToString(),this.getCurrentDate(5)的ToString(),};
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
对于(字符串TAB_NAME:标签){
TopRatedFragment FM =新TopRatedFragment();
fm.getTabs(TAB_NAME);
myFragmentList.add(FM);
}
viewPager =(ViewPager)findViewById(R.id.pager);
动作条= getActionBar();
mAdapter =新TabsPagerAdapter(getSupportFragmentManager(),myFragmentList);
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(假);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//添加标签
对于(字符串TAB_NAME:标签){
actionBar.addTab(actionBar.newTab()的setText(TAB_NAME)
.setTabListener(本));
}
actionBar.setSelectedNavigationItem(5);
/ **
*上刷卡viewpager做出相应的选项卡中选择
* * /
viewPager.setOnPageChangeListener(新ViewPager.OnPageChangeListener(){
@覆盖
公共无效onPageSelected(INT位置){
//在改变页面
//使尊敬的选项卡中选择
actionBar.setSelectedNavigationItem(位置);
}
@覆盖
公共无效onPageScrolled(INT为arg0,浮动ARG1,ARG2 INT){
}
@覆盖
公共无效onPageScrollStateChanged(INT为arg0){
}
});
}
公共字符串getTab(标签选项卡){
返回tab.getText()的toString()。
}
@覆盖
公共无效onTabReselected(TAB键,FragmentTransaction英尺){
}
@覆盖
公共无效onTabSelected(TAB键,FragmentTransaction英尺){
viewPager.setCurrentItem(tab.getPosition());
}
@覆盖
公共无效onTabUnselected(TAB键,FragmentTransaction英尺){
}
公共字符串getCurrentDate(INT偏移){
字符串calAsString;
日期格式格式化=新的SimpleDateFormat(MM / DD);
日历CAL = Calendar.getInstance();
cal.add(Calendar.DATE,偏移量);
calAsString = formatter.format(cal.getTime());
返回calAsString;
}
}
这是我的FragmentPagerAdapter:
公共类TabsPagerAdapter扩展FragmentPagerAdapter {
ArrayList的< TopRatedFragment> myList中;
公共TabsPagerAdapter(FragmentManager FM,ArrayList的< TopRatedFragment> myList中){
超(FM);
this.myList = myList中;
}
@覆盖
公共片段的getItem(INT指数){
返回myList.get(指数);
}
@覆盖
公众诠释getCount将(){
//获取项目计数 - 等于标签数
返回myList.size();
}
这里是我的简单的片段(现在):
公共类TopRatedFragment扩展片段{
@覆盖
公共无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
}
公共无效getTabs(字符串标签){
Log.e(成绩单,制表符);
}
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
捆绑savedInstanceState){
查看rootView = inflater.inflate(R.layout.fragment_top_rated,集装箱,假);
返回rootView;
}
}
创建一个静态的newInstance方法创建片段捆绑args作为片段。在片段拉动的args。
@覆盖
保护无效的onCreate(包savedInstanceState){
super.onCreate(savedInstanceState);
的setContentView(R.layout.activity_main);
对于(字符串TAB_NAME:标签){
TopRatedFragment FM =新TopRatedFragment.newInstance(TAB_NAME);
fm.getTabs(TAB_NAME);
myFragmentList.add(FM);
}
公共类TopRatedFragment扩展片段{
公共静态片段的newInstance(字符串位置){
TopRatedFragment F =新TopRatedFragment();
//供应NUM输入作为参数。
捆绑的args =新包();
args.putString(民,位置);
f.setArguments(参数);
返回F;
}
@覆盖
公共查看onCreateView(LayoutInflater充气,容器的ViewGroup,
捆绑savedInstanceState){
叠B = getArguments();
如果(B!= NULL){
字符串someText = b.containsKey(民)b.getString(民):空;?
}
I have an ActionBar that contains 11 tabs and 1 fragment. I also have a ViewPager to display the fragment(s). When a tab is clicked it creates the same fragment. The tabs display dates so they change everyday. What I need is to send the text of the tab (ie. .getTabText()) to the fragment, this will change the content of the fragment. I am having so much trouble trying to figure out how to do this. Here is all my code:
public class MainActivity extends FragmentActivity implements
ActionBar.TabListener {
private ViewPager viewPager;
private TabsPagerAdapter mAdapter;
private ActionBar actionBar;
private ArrayList<TopRatedFragment> myFragmentList = new ArrayList<TopRatedFragment>();
// Tab titles
String[] tabs = {this.getCurrentDate(-5).toString(),this.getCurrentDate(-4).toString(),this.getCurrentDate(-3).toString(), this.getCurrentDate(-2).toString(),this.getCurrentDate(-1).toString(),
this.getCurrentDate(0).toString(),
this.getCurrentDate(1).toString(), this.getCurrentDate(2).toString(), this.getCurrentDate(3).toString(), this.getCurrentDate(4).toString(), this.getCurrentDate(5).toString(),};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (String tab_name : tabs) {
TopRatedFragment fm = new TopRatedFragment();
fm.getTabs(tab_name);
myFragmentList.add(fm);
}
viewPager = (ViewPager) findViewById(R.id.pager);
actionBar = getActionBar();
mAdapter = new TabsPagerAdapter(getSupportFragmentManager(), myFragmentList);
viewPager.setAdapter(mAdapter);
actionBar.setHomeButtonEnabled(false);
actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
// Adding Tabs
for (String tab_name : tabs) {
actionBar.addTab(actionBar.newTab().setText(tab_name)
.setTabListener(this));
}
actionBar.setSelectedNavigationItem(5);
/**
* on swiping the viewpager make respective tab selected
* */
viewPager.setOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageSelected(int position) {
// on changing the page
// make respected tab selected
actionBar.setSelectedNavigationItem(position);
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageScrollStateChanged(int arg0) {
}
});
}
public String getTab(Tab tab) {
return tab.getText().toString();
}
@Override
public void onTabReselected(Tab tab, FragmentTransaction ft) {
}
@Override
public void onTabSelected(Tab tab, FragmentTransaction ft) {
viewPager.setCurrentItem(tab.getPosition());
}
@Override
public void onTabUnselected(Tab tab, FragmentTransaction ft) {
}
public String getCurrentDate(int offset) {
String calAsString;
DateFormat formatter = new SimpleDateFormat("MM/dd");
Calendar cal = Calendar.getInstance();
cal.add(Calendar.DATE, offset);
calAsString = formatter.format(cal.getTime());
return calAsString;
}
}
Here is my FragmentPagerAdapter:
public class TabsPagerAdapter extends FragmentPagerAdapter {
ArrayList<TopRatedFragment> myList;
public TabsPagerAdapter(FragmentManager fm, ArrayList<TopRatedFragment> myList) {
super(fm);
this.myList = myList;
}
@Override
public Fragment getItem(int index) {
return myList.get(index);
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return myList.size();
}
And here is my simple fragment (for now):
public class TopRatedFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
public void getTabs(String tabs) {
Log.e("TRF", tabs);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View rootView = inflater.inflate(R.layout.fragment_top_rated, container, false);
return rootView;
}
}
Create a static newInstance method to create fragment and bundle the args for the fragment. Pull the args in the fragment.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
for (String tab_name : tabs) {
TopRatedFragment fm = new TopRatedFragment.newInstance(tab_name);
fm.getTabs(tab_name);
myFragmentList.add(fm);
}
public class TopRatedFragment extends Fragment {
public static Fragment newInstance(String position) {
TopRatedFragment f = new TopRatedFragment();
// Supply num input as an argument.
Bundle args = new Bundle();
args.putString("num", position);
f.setArguments(args);
return f;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
Bundle b = getArguments();
if (b!=null){
String someText = b.containsKey("num")?b.getString("num"):null;
}
这篇关于在片段抓住TabText的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!