Fragment小技巧——几乎可以通用的fragment创建方法

我们在使用fragment时,当所需的fragment比较多的时候,创建fragment的代码就会重复,这时我们就可以把它封装起来。

  1. public abstract class SingleFragmentActivity extends FragmentActivity {

  2.  
  3. protected abstract Fragment createFragment();

  4.  
  5. @Override

  6. protected void onCreate(Bundle savedInstanceState) {

  7. super.onCreate(savedInstanceState);

  8. setContentView(R.layout.activity_fragment);

  9.  
  10. FragmentManager manager = getSupportFragmentManager();

  11. Fragment fragment = manager.findFragmentById(R.id.fragmentContainer);

  12.  
  13. if(fragment == null) {

  14. fragment = createFragment();

  15. manager.beginTransaction()

  16. .add(R.id.fragmentContainer, fragment)

  17. .commit();

  18. }

  19.  
  20. }

  21.  
  22. }

我们来分析一下代码:

首先创建了一个抽象类命名为SingleFragmentActivity继承自FragmentActivity(此处也可以为Activity),然后有一个抽象方法createFragment(),用于创建特定的fragment实例,在onCreate()方法体内,首先获得fragmentManager的实例,然后从容器中查找是否有fragment,如果有,则fragment已经创建过了,if体无需执行。如果容器内无fragment,则fragment实例为null,进入if体,创建framgnet,然后开启事务,调用add方法添加fragment到容器内,提交。

有这个类我们怎么创建我们需要的fragment呢?

首先创建一个activity继承自SingleFragmentActivity,由于SingleFragmentActivity中有createFragment()这个抽象方法,所以必须实现这个方法。

  1. public class MainActivity extends SingleFragmentActivity {

  2.  
  3. @Override

  4. protected Fragment createFragment() {

  5. return new NewsFragment();

  6. }

  7.  
  8. }


上面说了,createFragment()是用于创建我们需要的特定的fragment的,因此在此方法体内我们当然去编写创建fragment的逻辑啦!上面的代码我们返回了一个NewsFragment实例。

以上的步骤就创建好了fragment。

猜你喜欢

转载自blog.csdn.net/fanleiym/article/details/81906750
今日推荐