FragmentActivity で、ユーザーがクリックすると actionBar で時計回りのアニメーションを実行し、AsyncTask が終了すると停止する MenuItem を作成します。これは、更新を開始および停止するときに使用するコードです。
public void completeRefresh(MenuItem menuItem) {
if(menuItem!=null){
if(menuItem.getActionView()!=null){
menuItem.getActionView().clearAnimation();
menuItem.setActionView(null);
}
}
}
public void refresh(MenuItem menuItem) {
/* Attach a rotating ImageView to the refresh item as an ActionView */
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
ImageView iv = (ImageView) inflater.inflate(R.layout.refresh_action_view, null);
Animation rotation = AnimationUtils.loadAnimation(this, R.anim.clockwise_refresh);
rotation.setRepeatCount(Animation.INFINITE);
iv.startAnimation(rotation);
menuItem.setActionView(iv);
}
これはうまく機能しますが、フラグメントを切り替えると問題が発生します。Activity は、2 つのフラグメントを含む ViewPager で構成されます。アニメーション付きの ActionView の進行中にフラグメントを切り替えると、新しい Fragment に 2 つの時計回りの MenuItem が表示され、一方が他方をアニメーション化します。そしてアニメーションは決して終わらない。これは問題のスクリーンショットです。どうすればそれを回避できますか?