【问题标题】:Fragment ID or Tag in a ViewPager?ViewPager 中的片段 ID 或标签?
【发布时间】:2012-07-24 09:18:39
【问题描述】:

我目前在访问片段 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 片段。非常感谢您的帮助:( !!

【问题讨论】:

  • 你试过Tab0 tab0Fragment = (Tab0) getSupportFragmentManager().getFragments().get(0);吗?

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


【解决方案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");

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2012-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-04-24
    • 1970-01-01
    相关资源
    最近更新 更多