use*_*316 10 java android nullpointerexception android-context
我有一个关于片段中上下文用法的问题.我的问题是我总是得到一个NullpointerException.这是我做的:
创建一个扩展SherlockFragment的类.在那个类中,我有另一个Helper类的实例:
public class Fragment extends SherlockFragment {
private Helper helper = new Helper(this.getActivity());
// More code ...
}
Run Code Online (Sandbox Code Playgroud)
以下是其他Helper类的摘录:
public class Helper {
public Helper(Context context) {
this.context = context;
}
// More code ...
}
Run Code Online (Sandbox Code Playgroud)
每次我调用context.someMethod(例如context.getResources())我都会得到一个NullPointerException.这是为什么?
A--*_*--C 22
你试图Context在第Fragment一次实例化时得到一个.那时,它没有附加到Activity,所以没有效果Context.
看看片段生命周期.介于两者之间的onAttach(),以onDetach()包含一个有效的上下文实例的引用.通常通过检索此Context实例getActivity()
代码示例:
private Helper mHelper;
@Override
public void onAttach(Activity activity){
super.onAttach (activity);
mHelper = new Helper (activity);
}
Run Code Online (Sandbox Code Playgroud)
我onAttach()在我的例子中使用了@LaurenceDawson onActivityCreated().注意差异.由于onAttach()得到一个Activity传递给它了,我没有用getActivity().相反,我使用了传递的参数.对于生命周期中的所有其他方法,您将不得不使用getActivity().
| 归档时间: |
|
| 查看次数: |
14929 次 |
| 最近记录: |