gpt4 book ai didi

android - 在代码中动态创建选项卡 - Android Studio 3.5

转载 作者:行者123 更新时间:2023-11-30 05:03:19 25 4
gpt4 key购买 nike

我很难理解 Studio 3.5 选项卡式 Activity 模板。因此,要继续操作,只需使用 Studio 3.5 打开一个新项目并选择选项卡式 Activity 作为您的起始模板。

在这个简单的示例中,我需要一个 Activity ,它添加一个新的 TAB 并将信息传递给 PlaceholderFragment 类对象,并设置 Tab 标题。每个选项卡将使用相同的 fragment.xml 布局。并将根据从主要 Activity 传递的数据填充内容。它最初不会以任何选项卡开头。对于此示例,我们假设每次您按下模板中的 float 按钮时,它都会添加一个新的 TAB。

有人可以告诉我应该如何连接吗?我根本无法通过查看硬编码选项卡数量和选项卡标题的模板来弄清楚。我似乎对这种设计模式有一个完整的心理障碍。

最佳答案

好的 - 弄清楚了,所以要回答我的具体问题,以便其他人可以学习。

这个页面帮助我弄明白了。它是用 Kotlin 编写的,我使用的是 Java;但翻译没问题。 https://www.codexpedia.com/android/android-tablayout-with-many-tabs-kotlin/

  • 不要修改模板创建的任何一个 XML 文件。
  • 无需修改 PageViewModel.java(我仍然不知道如何使用它,在本练习中可能不需要。
  • 不要修改 PlaceholderFragment.java
  • 我对 MainActivity.java 和 SectionsPagerAdapter.java 的修改如下,不言自明。

    公共(public)类 SectionsPagerAdapter 扩展 FragmentPagerAdapter {

    private final Context mContext;
    ArrayList<String> tabNames = new ArrayList<>();
    ArrayList<Fragment> fragments = new ArrayList<>();

    public SectionsPagerAdapter(Context context, FragmentManager fm) {
    super(fm);
    mContext = context;
    }

    public void add(Fragment fragment, String title) {
    tabNames.add(title);
    fragments.add(fragment);
    }

    @Override
    public Fragment getItem(int position) {
    return fragments.get(position);
    }

    @Nullable
    @Override
    public CharSequence getPageTitle(int position) {
    return tabNames.get(position);
    }

    @Override
    public int getCount() {
    return fragments.size();
    }

对于 MainActivity.java,只需在 FloatingActionButton、onClickListener 中使用此代码即可添加新的 Tab。

    fab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int curCount = sectionsPagerAdapter.getCount();
sectionsPagerAdapter.add(PlaceholderFragment.newInstance(curCount),
"TAB " + String.valueOf(curCount));
sectionsPagerAdapter.notifyDataSetChanged();
}
});

仅此而已。

关于android - 在代码中动态创建选项卡 - Android Studio 3.5,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57827446/

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