我目前在访问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。非常感谢你的帮助:( !!
答案 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");