尝试在空对象引用上调用虚拟方法'void android.view.View.setAnimation(android.view.animation.Animation)'

时间:2019-11-08 07:30:56

标签: java android android-animation android-menu

我有通知菜单图标。我需要在onCreateOptionsMenu()调用时对其进行动画处理。

在实施过程中,我一直面临如下问题-

Attempt to invoke virtual method 'void 
android.view.View.setAnimation(android.view.animation.Animation)' on a 
null object reference.

Java代码:

private Animation animation;
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.home_screen,menu);

    animation = 
 AnimationUtils.loadAnimation(getApplicationContext(),R.anim.notify);

menu.findItem(R.id.notifications).getActionView().setAnimation(animation);

    return super.onCreateOptionsMenu(menu);
}

home_screen.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <menu xmlns:android="http://schemas.android.com/apk/res/android"
 xmlns:app="http://schemas.android.com/apk/res-auto">
 <item
    android:id="@+id/notifications"
    android:title="@string/action_settings"
    app:showAsAction="ifRoom"
    android:icon="@drawable/notifications"/>
  </menu>

notify.xml:

 <?xml version="1.0" encoding="utf-8"?>
 <rotate xmlns:android="http://schemas.android.com/apk/res/android"
android:fromDegrees="0"
android:toDegrees="180"
android:pivotX="50%"
android:pivotY="50%"
android:duration="500"
android:interpolator="@android:anim/accelerate_interpolator" />

请让我知道解决该问题的解决方案。 预先感谢。

1 个答案:

答案 0 :(得分:0)

根据this的答案,您需要先设置操作视图。并尝试将用户图像视图作为自定义操作视图来为您的菜单项设置动画以获取更多参考,请参考this