我正在尝试做一个简单的淡入淡出,通过从另一个类调用它来淡出我的活动中的动画。其实我有一个Activity和两个简单的类。在我的Activiy中,我从第一个类中调用一个方法,如下所示:
public TextView txt;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
txt = (TextView)findViewById(R.id.hello);
Megegy me = new Megegy(txt,MainActivity.this);
me.animatika();
}
以下是Megegy课程:
public class Megegy {
TextView txt;
Activity activity;
public Megegy(TextView txt,Activity activity){
this.activity = activity;
this.txt = txt;
}
Fadede fa = new Fadede(activity,txt);
public void animatika(){
fa.animati();
}
}
在这个类中,我从另一个包含动画的类中调用一个方法:
public class Fadede implements Animation.AnimationListener {
Animation animFadein;
Animation animFadeout;
public TextView txt;
Activity activity;
public Fadede(Activity activity, TextView txt) {
this.activity = activity;
this.txt = txt;
}
public void animati(){
animFadein = AnimationUtils.loadAnimation(activity, R.anim.fadein);
animFadein.setAnimationListener(this);
animFadeout = AnimationUtils.loadAnimation(activity, R.anim.fadeout);
animFadeout.setAnimationListener(this);
txt.startAnimation(animFadein);
}
public void onAnimationEnd(Animation animation) {
// Take any action after completing the animation
// check for fade in animation
if (animation == animFadein) {
}
}
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}
public void onAnimationStart(Animation animation) {
// TODO Auto-generated method stub
}
}
问题是当我运行这个应用程序时,我得到了一个 此行的java.lang.NullPointerException:
animFadein = AnimationUtils.loadAnimation(activity, R.anim.fadein);
我不知道是什么导致了这个错误,但如果有人有请回复!!
答案 0 :(得分:2)
尝试传递Activity
,而不是传递Context
个对象。在您的活动中,使用Megegy me = new Megegy(txt, this);
此外,
public class Megegy {
TextView txt;
Activity activity;
Fadede fa;
public Megegy(TextView txt, Context context){
this.activity = activity;
this.txt = txt;
this.fa = new Fadede(context, txt);
}
}
目前正在构建Fadede
对象,而activity
和txt
仍然是null
,因此您应该在Megegy
&angular.module('velociraptor-ui',[
...
'AccountService'
])
内创建对象#39; s构造函数。
答案 1 :(得分:1)
请注意,系统首先在您的类中创建所有全局变量,并为它们指定您指定的值或null值(如果不是),这将如下所示:
TextView txt = null;
Activity activity = null;
Fadede fa = new Fadede(activity,txt); //activity and txt are both null
在你的机器完成后,他调用构造函数,所以你必须调用
new Fadede(activity, txt);
在给出活动和txt值之后,在构造函数中