欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Fragment 搭建项目

程序员文章站 2022-05-31 19:56:54
...

标题我还真不知道怎么取,额.....大概的意思就是用一个或几个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 为架构的项目接口的快捷方式就这样了,然后还有显示、隐藏、移除、等等一些方法,还有一些需要处理的优化和调整这里就不记录了,自己根据需要写,根据需要调整吧。

相关标签: 架构