抱歉我的中文不太好,我是巴西人,正在使用翻译软件。
我有一个带有标签页的应用程序,并且我想简单而动态地添加具有标题、图标或标题和图标的选项卡。
因此,我开始构建以下类:
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类:https://pastebin.com/hFLUpHF2
Fragment fragment = (Fragment) Class.forName(fragmentPackage+ "." + tabfragment);
。我已经尝试了很多种方法,但总是出现相同的错误:不可转换类型;无法将'java.lang.Class<capture<?>>'转换为'android.support.v4.app.Fragment
。从我所理解的来看,这是(Fragment)和Class.forName之间的不兼容性。我该如何解决这个问题? - Samanta Silva.newInstance()
。我按照以下方式进行了修改,它起作用了:Fragment fragment = (Fragment) Class.forName(getPackageName()+".fragments."+tabfragment).newInstance();
。谢谢^^ - Samanta SilvanewInstance
,我已经更新答案进行更正。 - Akram