ViewPager中的片段ID或标签?

时间:2012-07-24 09:18:40

标签: android android-fragments android-viewpager fragment-identifier

我目前在访问Fragment ID和Fragment Tag时遇到问题。我目前正在TabHost和ViewPager中实现Fragment,新的选项卡添加如下:

mTabsAdapter.addTab(bar.newTab().setText("Tab0"),
            Tab0.class, null);

addTab方法如下:

public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
        TabInfo info = new TabInfo(clss, args);
        tab.setTag(info);
        tab.setTabListener(this);
        mTabs.add(info);
        mActionBar.addTab(tab);
        notifyDataSetChanged();
    }

我目前在我的活动中打开了2个标签和2个片段:Tab0.class和Tab1.class。我想要片段Id或片段标签Tab1,以便我可以使用回调方法将值传递给它。你能帮我这么好吗?

我没有运气试过以下内容:

public String addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
            TabInfo info = new TabInfo(clss, args);
            tab.setTag(info);
            tab.setTabListener(this);
            mTabs.add(info);
            mActionBar.addTab(tab);
            notifyDataSetChanged();
            return tab.getTag().toString();
        }

然后我将返回String作为Fragment标记调出,但它始终为null。你能帮帮我吗???????我该怎么做才能在后台访问Tab1 Fragment。非常感谢你的帮助:( !!

1 个答案:

答案 0 :(得分:1)

我今天遇到了类似的问题。我想为我的片段添加一个值,因为我使用了ViewPager和Adapter,所以我无法使用Tag。所以我使用我的适配器中的getItem()方法返回片段,然后在片段中创建一个方法。

public class SchedulePagerAdapter extends FragmentPagerAdapter {
  private final ArrayList<String> mTabs;
  public SchedulePagerAdapter(FragmentManager fm, Context mContext) {
    super(fm);
    mTabs = new ArrayList<String>();
    mTabs.add(new String(mContext.getString(R.string.label_monday)));
    mTabs.add(new String(mContext.getString(R.string.label_tuesday)));
    mTabs.add(new String(mContext.getString(R.string.label_wednesday)));
    mTabs.add(new String(mContext.getString(R.string.label_thursday)));
    mTabs.add(new String(mContext.getString(R.string.label_friday)));
    mTabs.add(new String(mContext.getString(R.string.label_saturday)));
    mTabs.add(new String(mContext.getString(R.string.label_sunday)));
  }

  @Override
  public CharSequence getPageTitle(int position) {
    return mTabs.get(position);
  }

  @Override
  public int getCount() {
    return mTabs.size();
  }

  @Override
  public Fragment getItem(int position) {
    return ScheduleFragment.newInstance(position);
  }
}

在活动中,我的价值如下:

(FragmentNameClass)mSchedulePagerAdapter.getItem(0).setDate("00-00-00");