关于在fragment中取得layoutinflater的问题 -问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

关于在fragment中取得layoutinflater的问题

我在用viewpage嵌套fragment的时候在fragment中取得layoutinflater,报空指针异常,调试的时候activity和layoutInflater都有值,然后就全为空了,代码如下:

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.fragment_business_base_order, container, false);
        activity = getActivity();
        initView();
        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        loadingData();
    }

然后,我稍微修改了一下,问题就解决了,代码如下:

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.fragment_business_base_order, container, false);
        activity = getActivity();
       initView();
        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        layoutInflater = getLayoutInflater(savedInstanceState);
        loadingData();
    }

所以我就感觉很疑惑,为什么第二种方法可以而第一种不可以,我又修改了一下代码,结果也是可以运行的,代码如下:

     @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {

        rootView = inflater.inflate(R.layout.fragment_business_base_order, container, false);
        activity = getActivity();
        layoutInflater = (LayoutInflater) activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        initView();
        return rootView;
    }

    @Override
    public void onActivityCreated(Bundle savedInstanceState) {
        super.onActivityCreated(savedInstanceState);
        loadingData();
    }

展开
收起
爵霸 2016-05-30 10:00:52 2278 0
1 条回答
写回答
取消 提交回答
  • 爵霸

    fragment里,如果是要获取layoutInflater,你直接用onCreateView的那个现成的不就行了。
    至于你说的问题,看代码,你这个fragment应该是写在activity那个类里吧,没啥问题。不清楚为啥会出现空指针。

    2019-07-17 19:19:06
    赞同 展开评论 打赏
问答排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载