我正在尝试编写一种方法来替换我用来交换片段的代码,以便将复制和发布保持在最低限度(并保持干燥)
问题当我尝试使用作为参数传入的类来创建该类的新实例时出现错误。
错误发生在这行代码中,在运算符(等号)的左侧:
newFragmentClass new_fragment = newFragmentClass.newInstance();
它给我的错误是:“newFragmentClass 无法解析为类型”。
完整代码 private void changeFragment(Class<?> newFragmentClass)
{
// Detect the current fragment
Fragment current_fragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
// Create a new instance of the given class, edit later to gracefully handle errors
newFragmentClass new_fragment = newFragmentClass.newInstance();
// Switch to the new fragment
FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
transaction.detach(current_fragment);
transaction.replace(R.id.fragment_container, new_fragment);
transaction.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
transaction.commit();
// Change the tab background to indicate that the tab is active, reset backgrounds for any other tabs
findViewById(R.id.page_one_tab).setBackgroundResource(R.drawable.menu_button_background_active);
findViewById(R.id.page_two_tab).setBackgroundResource(R.drawable.menu_button_background);
findViewById(R.id.page_three_tab).setBackgroundResource(R.drawable.menu_button_background);
}
// Page One Tab Button Functionality
public void pageOneTab (View v)
{
// Change the fragment to SelectPlayersFragment
changeFragment(Page_One_Fragment.class);
}
尝试的解决方案
我已经在 StackOverflow 和整个互联网上搜索了很长一段时间,但一直没有找到解决方案。像这样的一些主题似乎可以解决问题,但后来我在 transaction.replace 行上遇到了一个错误,我找不到修复方法:“FragmentTransaction 类型中的方法 replace(int, Fragment)不适用于参数(int,Object)”。