【问题标题】:Switching fragments: should I add some action?切换片段:我应该添加一些动作吗?
【发布时间】:2017-07-06 20:19:21
【问题描述】:

我有两个片段FirstFragment()SecondFragment() 和一个框架R.id.frame。 在我的代码中,我需要经常在框架R.id.frame 内的FirstFragment()SecondFragment() 之间切换。为此,我使用以下代码。

getSupportFragmentManager().beginTransaction()
    .replace(R.id.frame, new SecondFragment()).addToBackStack(null).commit();

根据最佳实践,这段代码是否足够?还是我应该添加一些其他操作?例如,销毁旧片段,将其删除等等。

【问题讨论】:

    标签: java android android-fragments fragmentmanager


    【解决方案1】:

    replace() = remove(FirstFragment) + add(SecondFragment)

    一旦第一个片段被删除,它将有资格进行垃圾回收。开发人员无需执行额外操作。

    【讨论】:

      【解决方案2】:

      您应该在添加片段后使用显示和隐藏。这不会在您每次在片段之间切换时重新创建您的片段。

      private void addFragment(Fragment fragment, Class<? extends Fragment> tag) {
              FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
              transaction.add(R.id.content, fragment, tag.getSimpleName()).addToBackStack(tag.getName()
              ).commit();
          }
      private void showFragment(Fragment fragment) {
              if (fragment == null) {
                  return;
              }
              FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
              transaction.show(fragment).commit();
          }
      
      private void hideFragment(Fragment fragment) {
              if (fragment == null) {
                  return;
              }
              FragmentTransaction transaction = getSupportFragmentManager()
                      .beginTransaction();
              transaction.hide(fragment).commit();
          }
      

      【讨论】:

        猜你喜欢
        • 2015-06-06
        • 1970-01-01
        • 1970-01-01
        • 2011-12-19
        • 2010-09-05
        • 2011-07-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多