FragmentActivity があり、フラグメント内で 2 つのビュー (基本的には 2 つの linearlayout、一度に 1 つだけ表示) 間の遷移をアニメーション化したいと考えています。
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);
}
正常に動作しますが、getActivity() で NPE を使用しているユーザーから多くのクラッシュ レポートが寄せられています。なので、入る前に非nullをチェックしていても、nullになってしまう状態になってしまいます(アニメーションが非同期だからかな?)。
アニメーションを正しく行っていないように感じます。それを行い、すべての NPE がユーザーを悩ませないようにするより良い方法はありますか?