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

我们在使用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 {

	@Override
	protected Fragment createFragment() {
		return new NewsFragment();
	}

}

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

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值