Fragment 搭建项目

标题我还真不知道怎么取,额.....大概的意思就是用一个或几个Acitivity为基础,然后已Fragment为主体的来构建项目,然后为了方便,就记录一下如何搭建使用的框架。

技术差差的,就写个大概记录一下方式。目前的开发中,应该大多数都使用Fragment 为主体来构建项目了吧。废话不多说了,撸代码吧...

首先说 Fragment 的创建,分为静态和动态。然后我这里就是用的动态创建。项目的开始,肯定有个 MainAcitivity 的,然后它的布局是这样,另外说一下,此处我将布局名称改为了 default_fragment_layout

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/fragment_container"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipToPadding="true"
    android:fitsSystemWindows="true" >

</FrameLayout>

不用别的,一个父控件,然后设置焦点拦截,添加一个 Id,就没了。

然后在 MainAcitivity 里面将原有的布局初始方法改掉成这样:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        int layout = ResourceUtil.getLayoutId(getApplicationContext(), "default_fragment_layout");
        setContentView(layout);
        BaseFragment.add(this, new MainFragment(), false);
    }

我们直接通过一个资源 id 来获取布局文件。然后设置布局。废话不多说的,继续接着看 ResourceUtil.getLayoutId的方法,这里面没啥,就是通过项目包路径,获取一个叫:default_fragment_layout 名字的资源文件布局:

同理,之后为了通过动态添加 fragment 布局与控件上,这里一样写一个获取控件 id 的方法先

	public static int getLayoutId(Context context, String name)
	{
		return context.getResources().getIdentifier(name, "layout", context.getPackageName());
	}

	public static int getId(Context context, String name)
	{
		return context.getResources().getIdentifier(name, "id", context.getPackageName());
	}

接着上面说的,获得了 layout 布局文件后,就设置布局进Acitivity 内,因为布局内什么都没有仅一个用于添加fragment的控件,而且我们现在不需要使用Acitivity,直接进行创建Fragment 的方法。


public class BaseFragment extends Fragment {

    public static void add(FragmentActivity activity, Fragment fragment, boolean addToBackStack) {
        int containerViewId = ResourceUtil.getId(activity, "fragment_container");
        FragmentTransaction ft = activity.getSupportFragmentManager().beginTransaction();
        ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
        ft.add(containerViewId, fragment);
        if (addToBackStack)
            ft.addToBackStack(null);
        ft.commit();
    }
}

这里就是创建BaseFragment 然后里面一个add 方法。通过工具类获得控件(MainAcitivty 布局里面存放Frg的控件),然后通过常用的方法,创建Fragment ,第三个参数指的是:是否添加到栈里面,用于区分创建的这个界面是否需要保存的意思咯。

总体的创建就是这么点东西配置了。然后使用,再Activity 内使用上面已经有了代码,在子Fragment 内使用直接在点击事件中调用下面方法就可以了:

                add(getActivity(),new MyTowFragment(),true);

 

 

基本的一个用Fragment 为架构的项目接口的快捷方式就这样了,然后还有显示、隐藏、移除、等等一些方法,还有一些需要处理的优化和调整这里就不记录了,自己根据需要写,根据需要调整吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值