android - 真的是看不懂v7的fragment了

查看:185
本文介绍了android - 真的是看不懂v7的fragment了的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

1.单例模式一般是不允许被继承的,但是v7开始官方就要将Fragment设计成单例模式了
用AndroidStudio自带的生成Fragment如下

public class BaseFragment extends Fragment {
    // TODO: Rename parameter arguments, choose names that match
    // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER
    private static final String ARG_PARAM1 = "param1";
    private static final String ARG_PARAM2 = "param2";

    // TODO: Rename and change types of parameters
    private String mParam1;
    private String mParam2;

    private OnFragmentInteractionListener mListener;

    public BaseFragment() {
        // Required empty public constructor
    }

    /**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BaseFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BaseFragment newInstance(String param1, String param2{
        BaseFragment fragment = new BaseFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }
    //...
}

而且需要注意的是 Fragment 就是单例模式的,因此 BaseFragment extends Fragment 这岂不是官方违背设计思想?另外正常的设计Fragment肯定避免不了继承,单例模式只是节省资源而已

2.仔细看上面自动生成的方法:

/**
     * Use this factory method to create a new instance of
     * this fragment using the provided parameters.
     *
     * @param param1 Parameter 1.
     * @param param2 Parameter 2.
     * @return A new instance of fragment BaseFragment.
     */
    // TODO: Rename and change types and number of parameters
    public static BaseFragment newInstance(String param1, String param2{
        BaseFragment fragment = new BaseFragment();
        Bundle args = new Bundle();
        args.putString(ARG_PARAM1, param1);
        args.putString(ARG_PARAM2, param2);
        fragment.setArguments(args);
        return fragment;
    }

居然还是TODO,而且参数命名一看就是非正式的,不敢相信这种半成品居然是官方提供的

解决方案

没看懂,首先就不知道官方哪里宣传了Fragment要使用单例模式了?
另外,自动生成的Fragment是让你用来自己实现的,不是让你直接用的,那些TODO就是你要做的事情,你怎么把他当成官方写的了。要是一生成就实现功能来用,那还要你写代码干嘛。

这篇关于android - 真的是看不懂v7的fragment了的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆