繁体   English   中英

如何在Android中更改按钮单击上的标签?

[英]How to change tab on button click in Android?

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

假设您的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源使用该奇数标记)
    • 将寻呼机设置为FragmentB

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM