【问题标题】:getActivity() returns null inside fragment shakelistenergetActivity() 在片段抖动监听器中返回 null
【发布时间】:2014-01-17 08:23:34
【问题描述】:

我的代码在大多数情况下都能正常工作,但有时我的抖动监听器中的 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().findViewById 是否返回 null??
  • 通常,片段会从活动中分离出来。在使用 getActivity() 之前使用 isAdded() 添加检查
  • 顺便说一句,您可能应该将 next_App 和 next_move 作为您的类的成员变量,当您创建活动时,它们就会膨胀,而不是每次在 onShake 上。它应该使动画以更少的延迟开始,因为您不会每次都浪费时间膨胀和加载资源。
  • @blackbelt 片段扩展了 SherlockFragment,问题发生在 2.3 设备上,但在 4.* 设备上工作正常。

标签: android android-fragments


【解决方案1】:

Similar question

片段与活动分离,因此getActivity() 有时会返回 null。 在getActivity() 之前添加getActivity != null 或更好地检查isAdded()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2012-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多