4

FragmentPagerSupport 是一个 FragmentActivity 类,FragmentA 和 FragmentB 代表 2 个不同的选项卡。在第一个选项卡中,我有一个 EditText 和一个按钮。我的任务是单击按钮需要打开第二个选项卡并在第二个选项卡中显示 EditText 值。我也在使用 FragmentStatePagerAdapter。

以下代码正在构建 FragmentActivity 的 onCreate() 选项卡:

    for (int i = 0; i < mSectionsPagerAdapter.getCount(); i++) {
        actionBar.addTab(actionBar.newTab()
                .setText(mSectionsPagerAdapter.getPageTitle(i))
                .setTabListener(this));
    }

我在 FragmentStatePagerAdapter 中的代码如下:

public Fragment getItem(int position) {
    Fragment fragment = null;
    Bundle args = new Bundle();         
    switch (position) {
    case 0:
        fragment = FragmentA();
        args.putInt(FragmentA.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
    break;
    case 1:
        fragment = new FragmentB();
        args.putInt(FragmentB.ARG_SECTION_NUMBER, position + 1);
        fragment.setArguments(args);
    break;
    }
return fragment;
}

我在按钮单击时的 FragmentA 代码如下:

confirmButton.setOnClickListener(new View.OnClickListener() {
    public void onClick(View view) {


    }
}

现在我卡在这里了。在这里找不到调用第二个选项卡并根据 tab1 EditText 值显示值的代码。

4

1 回答 1

12

假设您的 ViewPager 被命名为 mPager:

public void onClick(View view)
{
     mPager.setCurrentItem(1); // Change to page 1, i.e., FragmentB
}

我建议详细阅读培训页面。它涉及一些用于将信息从 Fragment 传递到 Fragment 的策略(通常通过让 Activity 实现一个 Fragment 然后可以调用的接口)。

这实际上取决于您希望片段的耦合程度。你当然可以使用类似的东西

((FragmentB)getActivity().getSupportFragmentManager().findFragmentByTag(
    "android:switcher:" + pager.getId() + ":1")).setExitText(text)

将文本从 FragmentA 传递到 FragmentB,但这会将您的 Fragment 彼此紧密耦合,并与 Activity 包含的 ViewPager 紧密耦合。

我会建议

  1. 使您的 Activity 实现一个包含单个方法的接口,例如 goToFragmentB(String exitText)
  2. 在 FragmentA 的 onClick 中调用此方法
  3. 有 goToFragmentB:
    • 在 FragmentB 中调用 setExitText (使用上面的 findFragmentByTag 使用每个ViewPager 源的奇数标签)
    • Set the pager to FragmentB
于 2013-03-01T04:42:18.287 回答