重启应用程序后,getActivity()抛出Null指针异常

时间:2015-06-28 17:09:20

标签: android android-fragments android-activity

我有一个Activity并在该活动中,在onCreate中我正在进行片段事务。我第一次打开应用程序,一切正常。但是,如果我最小化我的应用程序(不关闭。只需按主页按钮),浏览其他应用程序并返回到我的应用程序,然后它在其中一个片段的getActivity()调用中崩溃。这是与片段相关的代码:

MenuLayout.java

 public void startAnimation()
{
    final Random random = new Random();
    TimerTask animateTask = new TimerTask() {
        @Override
        public void run() {
            getActivity().runOnUiThread(new Runnable() {
                @Override
                public void run() {

                    animateHandler(random.nextInt(SIZE*SIZE));
                }
            });
        }
    };
     timer = new Timer();
    timer.scheduleAtFixedRate(animateTask,1000,1500);
}

在onCreateView中调用上述方法。 它在计时器任务内的getActivity()调用中崩溃。是的,我在onPause()中调用timer.cancel。

logcat的:

06-28 22:33:06.136  31786-31809/sample.apps.sampleapp E/AndroidRuntime﹕ FATAL EXCEPTION: Timer-0
Process: sample.apps.sampleapp, PID: 31786
java.lang.NullPointerException
        atsample.apps.sampleapp.MenuLayout$2.run(MenuLayout.java:155)
        at java.util.Timer$TimerImpl.run(Timer.java:284)

谢谢。

2 个答案:

答案 0 :(得分:0)

删除getActivity()。无需像onCreate()中那样添加它。 只需直接致电runUIOnThread()

答案 1 :(得分:0)

试试这个,它应该适合你。

if(isAdded())//add this
                    animateHandler(random.nextInt(SIZE*SIZE));