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

来源:互联网 发布:手机屏幕变魔术的软件 编辑:程序博客网 时间:2024/06/06 16:37

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

public abstract class SingleFragmentActivity extends FragmentActivity {protected abstract Fragment createFragment(); @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_fragment);                FragmentManager manager = getSupportFragmentManager();        Fragment fragment = manager.findFragmentById(R.id.fragmentContainer);                if(fragment == null) {        fragment = createFragment();        manager.beginTransaction()             .add(R.id.fragmentContainer, fragment)             .commit();        }            }}


我们来分析一下代码:

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

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

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

public class MainActivity extends SingleFragmentActivity {@Overrideprotected Fragment createFragment() {return new NewsFragment();}}

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

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


0 0
原创粉丝点击