0

我目前在访问片段 ID 和片段标签时遇到问题。我目前正在 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。我想要 Fragment Tab1 的 Fragment Id 或 Tag,以便我可以使用回调方法将值传递给它。请你帮我解决这个问题好吗?

我没有运气就尝试了以下方法:

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

然后后来我将返回字符串称为片段标记,但它始终为空。你能帮帮我吗??????我应该怎么做才能在后台访问 Tab1 片段。非常感谢您的帮助:( !!

4

1 回答 1

1

我今天遇到了类似的问题。我想给我的片段赋值,但我不能使用标签,因为我使用了 ViewPager 和适配器。所以我使用了来自我的适配器的方法 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");
于 2014-05-20T20:57:59.863 回答