我有一个关于片段中上下文使用情况的问题。我的问题是,我总是收到NullpointerException。这是我的工作:
创建一个扩展SherlockFragment的类。在该类中,我有另一个Helper类的实例:
public class Fragment extends SherlockFragment {
private Helper helper = new Helper(this.getActivity());
// More code ...
}
这是其他Helper类的摘录:
public class Helper {
public Helper(Context context) {
this.context = context;
}
// More code ...
}
每次调用时context.someMethod
(例如context.getResources()),我都会收到NullPointerException。这是为什么?
您正在尝试Context
在Fragment
首次实例化时获取一个。当时,它未附加到Activity
,因此没有有效的Context
。
看看Fragment
Lifecycle
。介于两者之间的onAttach()
,以onDetach()
包含一个有效的上下文实例的引用。通常通过以下方式检索此Context实例getActivity()
代码示例:
private Helper mHelper;
@Override
public void onAttach(Activity activity){
super.onAttach (activity);
mHelper = new Helper (activity);
}
我onAttach()
在示例中使用了@LaurenceDawson
onActivityCreated()
。注意差异。由于onAttach()
得到一个Activity
传递给它了,我没有用getActivity()
。相反,我使用了传递的参数。对于生命周期中的所有
其他 方法,您必须使用getActivity()
。
问题内容: 这是我第一次使用片段(android开发人员是新手),并且我正在尝试设置一个微调器。目前,我对上下文非常困惑,似乎无法解决此错误: 这是其所引用的代码: HotkeysFragment.java 具体行是: 进口: 我怎样才能解决这个问题? 问题答案: 来自Fragments的Android文档,来自此处: 警告:如果您在Fragment中需要一个Context对象,则可以调用getA
问题内容: 无论我在哪里看,似乎都可以用作。为什么总是看到? 问题答案: 您基本上可以使用,或者仍然可以使用,但是您的问题的答案在的文档中: FrameLayout旨在遮挡屏幕上的某个区域以显示单个项目。通常,应使用FrameLayout来保存单个子视图,因为在子视图彼此不重叠的情况下,难以以可扩展到不同屏幕尺寸的方式组织子视图。不过,您可以使用android:layout_gravity属性将多
有人有教程来实现使用支持库v7(appcomat_v7)的片段中的CAB吗? 我不知道该怎么做,我找不到一个教程来解释一个片段中的实现和使用支持库。 谢谢你的阅读。
我看到了许多如何在BaseFragment中获取上下文的示例,如下所示: 然后我们可以在扩展BaseFragment的其他片段中使用上下文实例。一、二、三(提供从onViewCreated()获取上下文)等等。看起来像是变通办法。 我也遇到过一些在Fragment中使用getActivity()或getContext()时发生“Fragment从Activity分离”异常的情况。 那么,真正的方法