0
我有一个FragmentActivity,并且在片段中我想在两个视图(基本上是2个linearlayout,每次只能看到一个)之间进行动画过渡。Android:在片段内的动画中的NPE
public void showError() {
if (getActivity() == null) return;
if (mErrorView.getVisibility() == View.VISIBLE) return;
if (mListView.getVisibility() == View.VISIBLE) {
mListView.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_out));
}
if (mSpinnerView.getVisibility() == View.VISIBLE) {
mSpinnerView.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_out));
}
mErrorView.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
mListView.setVisibility(View.GONE);
mErrorView.setVisibility(View.VISIBLE);
mSpinnerView.setVisibility(View.GONE);
}
它工作正常,但我得到了来自具有NPE的用户在getActivity()上的很多崩溃报告。所以即使我在进入之前检查非空值,我也进入了一个变为null的状态(也许是因为动画是异步的)。
我觉得我没有做动画的权利,有没有更好的方法来做到这一点,并防止所有NPE困扰我的用户?
我会尽力,但不知何故,我觉得必须有更好的方法。 – erwan 2012-07-22 06:49:14
我不知道它是如何变为空。你是否在另一个线程上运行该代码?另外,你可以发布一个例外回溯? – MJD 2012-07-23 05:04:15