gpt4 book ai didi

java - 如何获取字符串并转换为 fragment 名称以启动类?

转载 作者:行者123 更新时间:2023-11-29 00:03:03 26 4
gpt4 key购买 nike

抱歉英语不好,我是巴西人,我正在使用翻译器。

我有一个带有选项卡的应用程序,我想简单地动态添加带有标题、图标或标题和图标的选项卡。

所以我开始构建以下类:

 public static class TabItens {
TabLayout tabLayout;
SectionsPagerAdapter mSPAdapter
String titulo;
int resId;

public TabItens(TabLayout tabLayout, SectionsPagerAdapter mSPAdapter) {
this.tabLayout = tabLayout;
this.mSPAdapter = mSPAdapter;
}

public void AddTabItem(String tabfragment, String titulo) {
tabLayout.addTab(tabLayout.newTab().setText(titulo));
mSPAdapter.addFragment(new tabfragment);
}

public void AddTabItemIco(String tabfragment, String titulo, int resId) {
tabLayout.addTab(tabLayout.newTab().setIcon(resId).setText(titulo));
mSPAdapter.addFragment(new tabfragment);
}
}

我在处理它包含的行时遇到问题:mSPAdapter.addFragment(new tabfragment);

哪个必须兼容这个函数:

 public void addFragment(Fragment fragment) {
mFragmentList.add(fragment);
}

我该如何解决这个问题??

如有必要,请遵循完整的 Activity 类(class):https://pastebin.com/hFLUpHF2

最佳答案

由于 tabfragment 在您的代码中是一个 String,您不能调用 new tabfragment。这是不正确的,如果您的代码与您在此处发布的一样,则无法编译。

您可以使用 Class.forName() 方法从 fragment 类的名称创建 fragment 对象,假设您的所有 fragment 都在同一个包中并且您有 packagename它在一个以正确格式命名为 fragmentPackage 的字符串,例如类似 com.app.frags 的字符串,那么您应该按照以下步骤操作:

try{
Fragment fragment = (Fragment) Class.forName(fragmentPackage+ "." + tabfragment).newInstance();
} catch(ClassNotFoundException e) {
e.printStackTrace();
}

所以你的addFragment方法应该是:

public void addFragment(String tabfragment) {
try{
Fragment fragment = (Fragment) Class.forName(fragmentPackage+ "." + tabfragment).newInstance();
mFragmentList.add(fragment);
} catch(ClassNotFoundException e) {
e.printStackTrace();
}
}

关于java - 如何获取字符串并转换为 fragment 名称以启动类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49094069/

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