如何在Android中点击按钮点击标签?

时间:2013-03-01 04:38:27

标签: android android-fragments

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

以下代码正在构建FragmentActivity的创建标签:

    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值显示值。

1 个答案:

答案 0 :(得分:11)

假设您的ViewPager名为mPager:

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

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

这实际上取决于你想要你的碎片的耦合程度。你当然可以使用像

这样的东西
((FragmentB)getActivity().getSupportFragmentManager().findFragmentByTag(
    "android:switcher:" + pager.getId() + ":1")).setExitText(text)

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

我建议

  1. 让您的Activity实现一个包含单个方法的接口,例如goToFragmentB(String exitText)
  2. 在FragmentA的onClick
  3. 中调用此方法
  4. 有goToFragmentB:
    • 在FragmentB中调用setExitText(使用上面的findFragmentByTag,使用ViewPager source上的奇数标记)
    • 将寻呼机设置为FragmentB