Fragment中不能使用自定义带参构造函数

Posted ganchuanpu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Fragment中不能使用自定义带参构造函数相关的知识,希望对你有一定的参考价值。

通过Fragment自定义的静态方法将值从activity传到fragment中,然后就想到这样不是多次一举吗,为什么不直接写个带参构造函数将值传过去呢?试了一下,发现Fragment有参构造函数竟然报错,抱歉写了这么长时间代码对Fragment还不是很会用,笑哭,感觉任重道远啊...android中Fragment的构造函数
String[] titles = {
                GlobalConfig.CATEGORY_NAME_APP,
                GlobalConfig.CATEGORY_NAME_android,
                GlobalConfig.CATEGORY_NAME_ios,
                GlobalConfig.CATEGORY_NAME_FRONT_END,
                GlobalConfig.CATEGORY_NAME_RECOMMEND,
                GlobalConfig.CATEGORY_NAME_RESOURCE};

        CommonViewPagerAdapter infoPagerAdapter = new CommonViewPagerAdapter(getSupportFragmentManager(),titles);
        // App
        CategoryFragment appFragment = CategoryFragment.newInstance(titles[0]);
        // Android
        CategoryFragment androidFragment = CategoryFragment.newInstance(titles[1]);
        // iOS
        CategoryFragment iOSFragment = CategoryFragment.newInstance(titles[2]);
        // 前端
        CategoryFragment frontFragment = CategoryFragment.newInstance(titles[3]);
        // 瞎推荐
        CategoryFragment referenceFragment = CategoryFragment.newInstance(titles[4]);
        // 拓展资源s
        CategoryFragment resFragment = CategoryFragment.newInstance(titles[5]);

        infoPagerAdapter.addFragment(appFragment);
        infoPagerAdapter.addFragment(androidFragment);
        infoPagerAdapter.addFragment(iOSFragment);
        infoPagerAdapter.addFragment(frontFragment);
        infoPagerAdapter.addFragment(referenceFragment);
        infoPagerAdapter.addFragment(resFragment);

 

public static CategoryFragment newInstance(String mCategoryName) {
        CategoryFragment categoryFragment = new CategoryFragment();
        Bundle bundle = new Bundle();
        bundle.putString(CATEGORY_NAME, mCategoryName);
        categoryFragment.setArguments(bundle);
        return categoryFragment;
    }

 

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        View view = inflater.inflate(R.layout.fragment_blank, container, false);
        ButterKnife.bind(this, view);

        //取出传过来的值
        Bundle bundle = getArguments();
        mTitle  = bundle.getString(ARG_TITLE);

        return view;
    }

 

以上是关于Fragment中不能使用自定义带参构造函数的主要内容,如果未能解决你的问题,请参考以下文章

何时子类必须显示调用父类带参构造函数

Android Date Picker Fragment 不能设置为自定义日期

android 怎么在自定义控件中获取控件所在fragment的实例

深入类的方法

向Fragment传递参数,为什么用setArgument(),而不自定义变量再set赋值?

扩展1