Android getActivity()在侦听器内返回null
我的代码在大多数情况下运行良好,但有时我的shake侦听器中的getActivity()为空。我确信该片段已附加到该活动,因为在抖动发生之前,我对其UI执行了一些其他更新。此外,我在onActivityCreated方法中附加侦听器,该方法确保创建活动并将片段附加到Android getActivity()在侦听器内返回null,android,android-fragments,Android,Android Fragments,我的代码在大多数情况下运行良好,但有时我的shake侦听器中的getActivity()为空。我确信该片段已附加到该活动,因为在抖动发生之前,我对其UI执行了一些其他更新。此外,我在onActivityCreated方法中附加侦听器,该方法确保创建活动并将片段附加到 @Override public void onActivityCreated (Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState)
@Override
public void onActivityCreated (Bundle savedInstanceState){
super.onActivityCreated(savedInstanceState);
ShakeListener mShaker = new ShakeListener(getActivity());
mShaker.setOnShakeListener(new ShakeListener.OnShakeListener () {
public void onShake()
{
ImageView next_App = (ImageView)getActivity().findViewById(R.id.next_app);
Animation next_move = AnimationUtils.loadAnimation(getActivity(), R.anim.next);
next_App.startAnimation(next_move);
}
});
}
我无法解决这个问题,还有许多其他问题需要回答,所以非常感谢您的帮助。
谢谢
片段与活动分离,因此getActivity()
有时返回null。
为
getActivity!=在getActivity()
之前选中isAdded()
,或者选择null 您正在扩展哪个类,在哪个设备上有此问题?getActivity().findViewById是否返回null?通常,片段会从活动中分离。使用isAdded()
添加检查在使用getActivity()
BTW之前,您可能应该将next\u App和next\u move作为类的成员变量,在创建活动时会膨胀,而不是每次在onShake上。它应该使动画开始的延迟更小,因为您不会每次都浪费时间膨胀和加载资源。@blackbelt片段扩展了SherlockFragment,问题发生在2.3设备上,但在4.*设备上可以正常工作。