Добавление элементов ActionBar с исчезающей анимацией

1

У меня есть ViewPager, где один из его принадлежащих ему фрагментов имеет свой собственный элемент ActionBar, так что, когда вы переходите на эту страницу, элемент появляется в ActionBar, переходите на другую страницу, элемент уходит.

Я бы хотел, чтобы это произошло с анимацией fade-in/fade-out, но не знаю, как это сделать.

Я пробовал следующее. Но это дает мне NullPointerExecption на itemView.startAnimation(fade_in);

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        inflater.inflate(R.menu.intruders_list, menu); 

        // Setup animation
        Animation fade_in = AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in);
        fade_in.setInterpolator(new AccelerateInterpolator());
        fade_in.setDuration(250); 

        // Animate  
        MenuItem deleteItem = menu.findItem(R.id.action_delete);
        View itemView = deleteItem.getActionView();
        itemView.startAnimation(fade_in); // NPE HERE

        super.onCreateOptionsMenu(menu, inflater);  
}
Теги:
android-actionbar
android-animation

1 ответ

2
Лучший ответ

Вы получаете NullPointerException, потому что пытаетесь получить вид действия, где ни один не установлен. getActionView() возвращает null в вашем случае.

Чтобы решить эту проблему, вам нужно установить ее с помощью deleteItem.setActionView(R.layout.layout_action_view);.
В качестве альтернативы вы можете установить его с помощью android:actionLayout="@layout/layout_action_view" на свой элемент в intruders_list.xml.

layout_action_view.xml может выглядеть так просто:

<?xml version="1.0" encoding="utf-8"?>
<ImageView xmlns:android="http://schemas.android.com/apk/res/android"
   style="?android:attr/actionButtonStyle"
   android:id="@+id/iv_action"
   android:layout_width="wrap_content"
   android:layout_height="wrap_content"
   android:src="@android:drawable/ic_menu_rotate" />
  • 0
    Спасибо человек, работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню