我有一个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)
谢谢。
答案 0 :(得分:0)
删除getActivity()
。无需像onCreate()
中那样添加它。
只需直接致电runUIOnThread()
。
答案 1 :(得分:0)
试试这个,它应该适合你。
if(isAdded())//add this
animateHandler(random.nextInt(SIZE*SIZE));