重用 Fragment 或布局文件
Reusing Fragment or layout files
我正在制作一个英语教育应用程序,它有一个 activity 使用 viewPager 来 return 一些片段。该应用程序将有额外的单元,这些单元使用额外的活动,这些活动使用 viewPager 来 return 相同的片段(减去一些单词更改和顺序更改)。重用片段的最佳方法是什么?我应该只在另一个 activity 中实现这些片段吗?如果是这样,如果一个片段在新的 activity 中实现,而当同一个片段已经被后台堆栈中的另一个 activity 使用时,是否会出现问题?还是有另一种方法可以重用我的片段或布局文件?提前致谢。
是的,您可以多次重复使用您的片段和活动。首先,你的activity必须是一个fragment的容器,尽量不要把太多的责任交给你的activity。您可以创建一个 BaseActivity 并将一个布局(例如相对布局)作为片段容器,然后在每个 activity 中,您从基础 class 实现,您可以调用您的基础替换片段方法。
private void changeFragment(Fragment targetFragment){
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
在这里,您应该为每个不同的片段更改 "fragment' TAG,然后当您获得 TAG 时,在新的 Fragment 中您可以识别出那是哪个片段。所以做得更好这部分抽象方法。
可重用性是使用 Fragment
的主要好处之一,因此您当然应该尽可能地尝试和重用它们。来自 Android 文档 (https://developer.android.com/guide/components/fragments.html)
You can (...) reuse a fragment in multiple activities
由于 Android 会在您重复使用它时创建您的 Fragment
的新实例,因此应该没有与现有 Fragment
发生冲突的风险(只要您不t 使用它们之间共享的静态变量)。
我正在制作一个英语教育应用程序,它有一个 activity 使用 viewPager 来 return 一些片段。该应用程序将有额外的单元,这些单元使用额外的活动,这些活动使用 viewPager 来 return 相同的片段(减去一些单词更改和顺序更改)。重用片段的最佳方法是什么?我应该只在另一个 activity 中实现这些片段吗?如果是这样,如果一个片段在新的 activity 中实现,而当同一个片段已经被后台堆栈中的另一个 activity 使用时,是否会出现问题?还是有另一种方法可以重用我的片段或布局文件?提前致谢。
是的,您可以多次重复使用您的片段和活动。首先,你的activity必须是一个fragment的容器,尽量不要把太多的责任交给你的activity。您可以创建一个 BaseActivity 并将一个布局(例如相对布局)作为片段容器,然后在每个 activity 中,您从基础 class 实现,您可以调用您的基础替换片段方法。
private void changeFragment(Fragment targetFragment){
getSupportFragmentManager()
.beginTransaction()
.replace(R.id.main_fragment, targetFragment, "fragment")
.setTransitionStyle(FragmentTransaction.TRANSIT_FRAGMENT_FADE)
.commit();
}
在这里,您应该为每个不同的片段更改 "fragment' TAG,然后当您获得 TAG 时,在新的 Fragment 中您可以识别出那是哪个片段。所以做得更好这部分抽象方法。
可重用性是使用 Fragment
的主要好处之一,因此您当然应该尽可能地尝试和重用它们。来自 Android 文档 (https://developer.android.com/guide/components/fragments.html)
You can (...) reuse a fragment in multiple activities
由于 Android 会在您重复使用它时创建您的 Fragment
的新实例,因此应该没有与现有 Fragment
发生冲突的风险(只要您不t 使用它们之间共享的静态变量)。