【问题标题】:NullPointerException LayoutInflater.from(context) - Fragment AndroidNullPointerException LayoutInflater.from(context) - Android 片段
【发布时间】:2014-09-29 06:20:48
【问题描述】:

我已经实现了嵌套片段。子片段包含 BaseAdapter。当我切换(替换)子片段时,我得到了 Nullpointer 异常。 代码:

public MyAdapter(final Context context,
            final List<CusomObject> CusomObjectList) {
        mInflater = LayoutInflater.from(context);
        this.CusomObjectList = CusomObjectList;     
    }

我在这一行遇到错误 - mInflater = LayoutInflater.from(context);

我在 Fragment 的 MyAdapter 构造函数中传递了 getActivity()

代码:

adapter = new MyAdapter(getActivity(), customList);
listView.setAdapter(adapter);

【问题讨论】:

  • 尝试将final Context context更改为final Activity activity并使用mInflater=activity.getLayoutInflater()

标签: android android-fragments fragment android-nested-fragment


【解决方案1】:

我在 Fragment 的 MyAdapter 构造函数中传递了 getActivity()。

这正是问题所在。

当调用 Fragment 构造函数时 - 对 Activity 的引用仍未启动。

相反 - 您应该从 Fragment 的 onCreate() 方法创建依赖于 Activity 上下文的任何对象创建或初始化。

一般来说,完全不建议重写 Fragment 构造函数,就像你不重写 Activity 构造函数一样,只重写它的生命周期回调。

更多信息在 - http://developer.android.com/guide/components/fragments.html

【讨论】:

  • @Slk: 如果我的回答解决了你的问题——你可以接受这个答案
  • 谢谢,您的回答解决了我的问题。所以我接受了你的回答。
【解决方案2】:

使用另一个变量。

Context mContext;

public MyAdapter(final Context context,
        final List<CusomObject> CusomObjectList) {
    this.mContext = context;
    mInflater = LayoutInflater.from(mContext);
    this.CusomObjectList = CusomObjectList;     
}

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-14
    • 2012-08-17
    • 1970-01-01
    • 2015-10-12
    • 1970-01-01
    相关资源
    最近更新 更多