Android 制作动画时的NullPointerException
我的android应用程序中有一个非常恼人的问题,我就是想不出是什么问题 我正在尝试制作一个动画对象,如下所示:Android 制作动画时的NullPointerException,android,animation,nullpointerexception,android-viewpager,android-context,Android,Animation,Nullpointerexception,Android Viewpager,Android Context,我的android应用程序中有一个非常恼人的问题,我就是想不出是什么问题 我正在尝试制作一个动画对象,如下所示: Animation anim = AnimationUtils.makeInChildBottomAnimation(Myclass.this); ViewPagerClass d = new ViewPagerClass(); d.showMenu(); 这是LogCat: 01-01 15:25:37.730: E/AndroidRuntime(10277):
Animation anim = AnimationUtils.makeInChildBottomAnimation(Myclass.this);
ViewPagerClass d = new ViewPagerClass();
d.showMenu();
这是LogCat:
01-01 15:25:37.730: E/AndroidRuntime(10277): FATAL EXCEPTION: main
01-01 15:25:37.730: E/AndroidRuntime(10277): java.lang.NullPointerException
01-01 15:25:37.730: E/AndroidRuntime(10277): at android.content.ContextWrapper.getResources(ContextWrapper.java:81)
01-01 15:25:37.730: E/AndroidRuntime(10277): at android.view.animation.AnimationUtils.loadAnimation(AnimationUtils.java:71)
01-01 15:25:37.730: E/AndroidRuntime(10277): at android.view.animation.AnimationUtils.makeInChildBottomAnimation(AnimationUtils.java:253)
我猜这与获取类的上下文有关。
我也尝试过从xml文件加载一个动画并制作一个alhpa动画,但我在这两个方面都得到了NPE
我正在调用setContentView()代码>在onCreate
中,所以我不明白为什么会出现这个错误。
在这个类中,我声明了一个ViewPagerAdapter
,并将其设置为xml布局中的ViewPager
。
在适配器类中,iam检查ViewPager
中显示的ImageView
上是否长时间单击。当用户长时间单击时,我调用我要获取错误的类中的静态方法。静态方法依次生成一个新对象,该对象调用非静态方法,如下所示:
Animation anim = AnimationUtils.makeInChildBottomAnimation(Myclass.this);
ViewPagerClass d = new ViewPagerClass();
d.showMenu();
在showMenu
方法中,我尝试使该动画在相对动画中淡出,但这就是它失败的地方。在您的评论之后,您似乎正在实例化ViewPagerClass
类,它是一个活动。这样做是不正确的,因为手动实例化的活动将没有关联的有效上下文
,并且在尝试使用不存在的上下文
时会出现异常。活动将由Android系统创建和管理
当用户长时间单击时,我调用我创建的类中的静态方法
我发现了错误。静态方法依次生成一个新对象
调用如下非静态方法:
Animation anim = AnimationUtils.makeInChildBottomAnimation(Myclass.this);
ViewPagerClass d = new ViewPagerClass();
d.showMenu();
不要这样做。如果ViewPagerAdapter
和ViewPagerClass
类位于不同的文件中,则修改ViewPagerAdapter
构造函数,以便向其传递一个上下文
引用(一个活动
(ViewPagerClass
)是一个上下文
)并在创建ViewPagerAdapter
实例时指定this
或ViewPagerClass.this
。然后,您可以使用ViewPagerAdapter
中的Context
引用在图像长时间单击时调用showMenu()
方法。什么确切地表示ViewPagerClass
?@Luksprog我有两个类,一个是ViewPagerClass,另一个是ViewPagerAdapter。在viewpagerclass中,我调用setcontentview();viewpageradapter类似于助手类,我从位图数组填充viewpager中的imageview。当有人长时间单击imageview时,我从viewpageradapter类调用ViewPagerClass中的静态方法。在该方法中,我在viewpagerclass中调用一个非静态方法,在该方法中,我尝试制作一个将显示relativelayout的动画。我理解如果这没有多大意义的话,实际上我已经将ViewPagerClass的上下文传递给Adapter类中的构造函数了。我会试试你说的!谢谢非常感谢你!我通过在实例化时将活动上下文传递给适配器来实现它,当我在适配器类中调用static showMenu()时,我传递了从构造函数接收到的上下文。在showMenu()中,我调用了非静态方法,只是再次传递了上下文,并在制作动画时使用了上下文。也许不是很好的编码,但至少它是有效的!