gpt4 book ai didi

android - 如何在 Android 中更改按钮点击选项卡?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:50:22 26 4
gpt4 key购买 nike

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

以下代码是在 FragmentActivity 的 Create() 上构建标签:

    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
}

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

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

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

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

我会建议

  1. 让您的 Activity 实现一个包含单一方法的接口(interface),例如 goToFragmentB(String exitText)
  2. 在 FragmentA 的 onClick 中调用此方法
  3. 有 goToFragmentB:
    • 在 FragmentB 中调用 setExitText(根据 ViewPager source 使用上面的 findFragmentByTag 使用那个奇怪的标签)
    • 将分页器设置为 FragmentB

关于android - 如何在 Android 中更改按钮点击选项卡?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15150587/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com