0

現在、フラグメントIDとフラグメントタグへのアクセスに問題があります。現在、TabHostとViewPagerにフラグメントを実装しています。新しいタブは次のように追加されます。

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

その後、戻り文字列をFragmentタグとして呼び出しましたが、常にnullです。手伝ってくれませんか??????? バックグラウンドでTab1Fragmentにアクセスするにはどうすればよいですか。親切に助けてくれてありがとう:(!!

4

1 に答える 1

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");
于 2014-05-20T20:57:59.863 に答える