Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android getActivity()在侦听器内返回null_Android_Android Fragments - Fatal编程技术网

Android getActivity()在侦听器内返回null

Android getActivity()在侦听器内返回null,android,android-fragments,Android,Android Fragments,我的代码在大多数情况下运行良好,但有时我的shake侦听器中的getActivity()为空。我确信该片段已附加到该活动,因为在抖动发生之前,我对其UI执行了一些其他更新。此外,我在onActivityCreated方法中附加侦听器,该方法确保创建活动并将片段附加到 @Override public void onActivityCreated (Bundle savedInstanceState){ super.onActivityCreated(savedInstanceState)

我的代码在大多数情况下运行良好,但有时我的shake侦听器中的getActivity()为空。我确信该片段已附加到该活动,因为在抖动发生之前,我对其UI执行了一些其他更新。此外,我在onActivityCreated方法中附加侦听器,该方法确保创建活动并将片段附加到

@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.*设备上可以正常工作。